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 でタイムスタンプを日付に変換する例

推薦する

PHP クラスにおける static と self の違いの簡単な分析

メソッドが定義されているクラスに応じて、現在のクラスへの静的参照を取得するには、self:: または...

Vueはキー表示のショートカットキー効果を取得する入力コンポーネントを実装します

ページ上でショートカットキーをカスタマイズする要件に遭遇し、ショートカットキーを設定して表示する場所...

浮遊要素によって引き起こされる問題と解決策の詳細な説明

1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...

Linux で MySQL をインストールする簡単な方法

Linux に MySQL をインストールする方法をオンラインで検索すると、多くの方法が表示されまし...

HTML テーブルタグチュートリアル (19): 行タグ

<TR> タグの属性は、次の表に示すように、テーブル内の各行のプロパティを設定するために...

Linux環境で環境変数を設定する方法

JDKダウンロードアドレス: http://www.oracle.com/technetwork/j...

MySQL 同期遅延が発生したときに Seconds_Behind_Master が 0 のままになる理由

目次問題の説明原理分析問題分析拡大する総括する問題の説明ユーザーはプライマリ データベースに対して変...

SQL文の最適化の一般的な手順の詳細な説明

序文この記事では主に、SQL ステートメントの最適化の一般的な手順について説明します。これは、参考と...

Ubuntu システムにおける Mysql ERROR 1045 (28000): ユーザー root@localhost へのアクセスが拒否される問題の解決方法

最初の方法: skip-grant-tables: 非常に便利なmysql起動パラメータ非常に便利な...

JavaScript を使用して div の位置をドラッグして入れ替える例

1 実施原則これは、DOM 要素の dragstart/ondragover/ondrop イベント...

Vueは透かし効果を簡単に実現します

序文: Vueプロジェクトで透かし効果を使用するには、コンテナを指定できます効果画像: 1. コンテ...

FTP、FTPS、SFTPの違いについて簡単に説明します

目次FTP、FTPS、SFTP の概要FTP FTPS FTPサーバーFTPソフトウェアのアクティブ...

Linux でのマルチスレッドおよびマルチプロセス クラッシュのシミュレーションに関する簡単な説明

結論:マルチスレッド環境では、スレッドの 1 つがクラッシュすると、他のスレッド (プロセス全体) ...

FirefoxでCookieとお気に入りをインポートおよびエクスポートする方法

Firefox は、多くの拡張機能とプラグインを備えた、よく使用されるブラウザです。IE に比べて多...

vue.config.js からプロジェクト最適化までの vue2.x 構成

目次序文vue.config.js 構成オプションパッケージサイズを縮小するためのパッケージの最適化...