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

推薦する

MySQL ストアド プロシージャ、カーソル、トランザクションの例の詳細な説明

MySQL ストアド プロシージャ、カーソル、トランザクションの例の詳細な説明以下は私が作成した M...

ポータルサイト再設計のユーザーエクスペリエンス

<br />2006年10月12日のNetEaseの新ホームページの公開から、2008年...

Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...

JavaがMySQL 8.0に接続できない問題の解決策

この記事では、参考までにMySQL 8.0に接続できないJavaの問題をまとめて紹介します。具体的な...

両端揃えレイアウトを実現する CSS 列のサンプルコード

1. 堂々巡りいろいろ試行錯誤した結果、均等割り付けレイアウトを実現する最も簡単な方法は CSS ...

使用状況分析を備えたMySQL

持つことの使用法having 句を使用すると、グループ化後にさまざまなデータをフィルター処理できます...

Nginx設定の原理と実装プロセスの詳細な説明https

Linuxユーティリティcertbotを使用してhttps証明書を生成するこのツールは Let&#...

mysql ワイルドカード (sql 高度なフィルタリング)

目次まず、値の一部と一致させるために使用される特殊文字であるワイルドカードについて簡単に紹介します。...

MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明

1. デッドロックとは何ですか?正式な定義は次のとおりです: 2 つのトランザクションが相手側で必要...

MySQLでスケジュールされたタスクを設定する方法の分析

この記事では、例を使用して、MySQL でスケジュールされたタスクを設定する方法について説明します。...

CSS ですべての子要素を選択し、スタイルを追加する方法

方法:実際のプロジェクトを例に挙げてみましょう。 .lk-ツールバー{ .el-入力{ 幅: 169...

Linuxの貼り付けコマンドの使い方

01. コマンドの概要貼り付けコマンドは各ファイルを列ごとに結合します。これは、2 つの異なるファイ...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...

CSS3 で z-index が効かない問題の解決方法

最近、CSS3 と js の組み合わせを作成したのですが、z-index が有効にならないケースが多...

Vueはドラッグアンドドロップまたはクリックで写真をアップロードする機能を実装しています

この記事では、ドラッグアンドドロップやクリックによる画像のアップロードを実現するためのVueの具体的...