Nginx で複数のドメイン名がドメインをまたいでアクセスできるようにマップを使用する方法

Nginx で複数のドメイン名がドメインをまたいでアクセスできるようにマップを使用する方法

一般的なNginx構成ではクロスドメインが可能

サーバー{
  11111 を聞いてください。
  server_name ローカルホスト;

  場所 ~ /xxx/xx {
    $request_method = 'OPTIONS'の場合{
      204を返します。
    }
    アクセス制御許可オリジン * のヘッダーを追加します。
    add_header アクセス制御許可メソッド 'GET、POST、OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT、X-Mx-ReqToken、Keep-Alive、User-Agent、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type、Authorization';
    プロキシパス http://1.2.3.4:5678;
  }
}

Access-Control-Allow-Origin を '*' として指定します。これは、すべてのクロスドメイン アクセスを許可する最も単純かつ強力な方法です。

クッキーを許可する

一部のシナリオでは、Cookie が必要です。この場合、Nginx は add_header Access-Control-Allow-Credentials 'true'; という文を追加する必要がありますが、このとき、ブラウザは、このパラメータが true の場合、allow origin を '*' に設定できないというエラーを報告します。複数のドメイン名を手動で指定した場合も、ブラウザは、allow origin を複数に設定できないというエラーを報告します。これらは、プロトコル レベルの制限です。

マップの使用

Nginx では、map を使用してカスタム変数を取得できます。簡単な使用方法については、公式ドキュメントを参照してください。上記のシナリオでは、リクエスト内の origin をフィルターし、要件を満たすリクエスト ドメイン名を変数に入れることができます。allow origin を設定すると、この変数を使用して、動的な複数のクロスドメイン ドメイン名を実装できます。

構成例は次のとおりです。

$http_origin $allow_origin をマップします {
  デフォルト "";
  "~^(https?://localhost(:[0-9]+)?)" $1;
  "~^(https?://127.0.0.1(:[0-9]+)?)" $1;
  "~^(https?://172.10(.[\d]+){2}(:[0-9]+)?)" $1;
  "~^(https?://192.168(.[\d]+){2}(:[0-9]+)?)" $1;
}

サーバー{
  11111 を聞いてください。
  server_name ローカルホスト;

  場所 ~ /xxx/xx {
    $request_method = 'OPTIONS'の場合{
      204を返します。
    }
    アクセス制御の許可元ヘッダー $allow_origin を追加します。
    add_header アクセス制御許可メソッド 'GET、POST、OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT、X-Mx-ReqToken、Keep-Alive、User-Agent、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type、Authorization';
    add_header アクセス制御許可資格情報 'true';
    プロキシパス http://1.2.3.4:5678;
  }
}

説明:

$http_originはNginxの内部変数で、リクエストヘッダーのオリジンを取得するために使用されます。

$allow_originはカスタマイズ可能な変数名です

要約する

これで、マップを使用して Nginx を実装し、ドメイン間で複数のドメイン名を許可する方法についてのこの記事は終了です。ドメイン間で複数のドメイン名を許可する Nginx のマップ実装の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。

以下もご興味があるかもしれません:
  • Nginxサーバーにおけるマップモジュールの設定と使用方法の詳細な説明
  • Nginxのmapコマンドを使用してページをリダイレクトする
  • nginx を使用して Cookie のクロスドメイン アクセスを解決する方法
  • Nginxはアドレス転送時のクロスドメイン問題を解決します
  • Vue パッケージングは​​ Nginx プロキシを使用してクロスドメインの問題を解決します
  • Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明
  • nginx を使用してクロスドメイン問題を解決する方法 (Flask を例に)

<<:  JS配列メソッドsome、every、findの使用に関する詳細

>>:  MySQL でタイムスタンプを日付に変換する例

推薦する

無視されたDOCTYPE記述の分析

doctype もその 1 つです。 <!DOCTYPE HTML PUBLIC "...

Vueはログインタイプの切り替えを実装します

この記事では、ログインタイプの切り替えを実装するためのVueの具体的なコードを例として紹介します。具...

MySQL カーソルの原理と使用例の分析

この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...

Linuxでkv設定ファイルを変更するにはsedコマンドを使用します

sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...

MySQL における冗長インデックスと重複インデックスの違い

MySQL では、1 つの列に複数のインデックスを作成できます。意図的であるかどうかにかかわらず、M...

タイムスタンプの差を計算するSQLメソッド

タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...

ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション

ElementUIページングコンポーネントPagination in Vueの使用は参考になります。...

検索履歴を実装するjQueryプラグイン

毎日jQueryプラグイン - 検索履歴を作成するためのものです。参考までに、具体的な内容は次のとお...

MySQLの共同クエリ最適化メカニズムの詳細な説明

目次MySQL フェデレーテッド クエリ実行戦略。実行計画フェデレーテッドクエリオプティマイザーMy...

Linuxシステムはルートアカウントのリモートログインコマンドを禁止しています

ps: Linux システムで root アカウントのリモート ログインを無効にする方法は次のとおり...

div の特定の実装は自動的に折り返されず、HTML で折り返されないよう強制されます。

1. 改行なしを実現するには<nobr>タグを使用するコードをコピーコードは次のとおりで...

docker ログが取得できない問題の解決方法

毎日サービスをチェックしているときに、portainer からコンテナ ログを確認しようとしたところ...

HTML における DTD の使用法の概要

DTD はマークアップの文法規則のセットです。これは XML 1.0 仕様の一部であり、HTML フ...

友達やグループを見つけるためのJavaScriptのLayim

現在、layuiの関係者はlayim友達検索ページの構造とスタイルを提供していません。私は個人的に非...

ChromeはCookieの変更を監視し、値を割り当てます

次のコードは、Chrome による Cookie の変更の監視を導入しています。コードは次のとおりで...