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

推薦する

NginxはLua+Redisを使用してIPを動的にブロックします

1. 背景日常的なウェブサイトのメンテナンスでは、このような要件に頻繁に遭遇します。特定のクローラー...

HTML シンプルな Web フォーム作成例の紹介

<input> はユーザー情報を収集するために使用され、終了ステートメントはありません。...

Kubernetes YAMLファイルの使用

目次01 YAMLファイルの概要YAML---キー値型YAML---リスト型02 K8Sにおけるマス...

CentOS で LibreOffice を使用してドキュメント形式を変換する方法

プロジェクト要件では、アップロードされたドキュメントの前処理が必要です。ユーザーが doc 形式でド...

MySQL データベースの 1045 エラーの解決方法

ローカル データベースがサーバー データベースに接続されているときに発生する 1045 の問題を解決...

HTML の基本 - ハイパーリンク スタイルを設定する簡単な例

*** ハイパーリンクのスタイル設定の例a:link クリックされる前のハイパーリンクの状態a:vi...

例を通してMySQLの更新がテーブルをロックするかどうかを判定する

2つのケース: 1. 索引あり 2. 索引なし前提条件:方法: コマンドラインを使用してシミュレート...

史上最も簡単な MySQL データのバックアップと復元のチュートリアル (パート 2) (パート 37)

データのバックアップと復元パート3の詳細は次のとおりです基本的な概念:バックアップ、現在のデータまた...

MySql8.023 インストール プロセスの詳細なグラフィック説明 (初回インストール)

まず、MySQL公式サイトからインストールパッケージをダウンロードします。MySQLはオープンソース...

MySQL 8.0.20 のインストールと設定の詳細なチュートリアル

この記事では、MySQL 8.0.20のインストールと設定方法についての詳細なチュートリアルを参考ま...

Linux リモート開発に vs2019 を使用する方法

通常、Linux プログラムを開発する場合、次の 2 つのオプションがあります。 Linux上で直接...

Linux システムファイル共有 samba 設定チュートリアル

目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...

CSS3 タイムラインアニメーション

成果を達成する html <h2>CSS3 タイムライン</h2> <...

MySQL 5.7.21 解凍版のインストールと設定方法のグラフィックチュートリアル

私は頻繁にシステムをインストールするので、インストールのたびにいくつかのソフトウェアを再インストール...