Nginx は、リクエスト ヘッダー内のカスタマイズされた識別子に基づいて、リクエストをさまざまなサーバーに分散できます。具体的には、map ディレクティブを使用してリクエスト ヘッダー内のカスタム識別子を別のバックエンド サーバー アドレスにマップし、proxy_pass ディレクティブを使用してリクエストを対応するバックエンド サーバーに転送できます。
以下は設定ファイルのサンプルです:
http { map $http_my_header $backend { default backend1.example.com; value1 backend2.example.com; value2 backend3.example.com; } upstream backend1 { server 192.168.1.1:8080; server 192.168.1.2:8080; } upstream backend2 { server 192.168.2.1:8080; server 192.168.2.2:8080; } upstream backend3 { server 192.168.3.1:8080; server 192.168.3.2:8080; } server { listen 80; server_name example.com; location / { proxy_pass http://$backend; } } }
この設定ファイルでは、リクエスト ヘッダーの $http_my_header 変数を別のバックエンド サーバー アドレスにマップするためのマップ ディレクティブを定義します。 $http_my_header の値が value1 の場合、リクエストは backend2.example.com に転送されます。$http_my_header の値が value2 の場合、リクエストは backend3.example.com に転送されます。それ以外の場合、リクエストは backend3.example.com に転送されます。 backend1.example.com。
次に、バックエンド サーバー グループ backend1、backend2、および backend3 を表す 3 つの上流ブロックを定義します。各グループには複数のバックエンド サーバーが含まれます。サーバー ブロックでは、proxy_pass ディレクティブを使用して、リクエストを対応するバックエンド サーバーに転送します。
この構成後、リクエスト ヘッダーの $http_my_header の値が value1 の場合、リクエストは backend2 バックエンド サーバー グループに転送され、$http_my_header の値が value2 の場合、リクエストは backend2 に転送されます。 backend3 バックエンド サーバー グループ; それ以外の場合、要求は backend1 バックエンド サーバー グループに転送されます。
ソケットを構成し、いくつかの構成を追加します:
server { listen 80; server_name example.com; location /websocket { proxy_pass http://$backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } }
以上がNginx がヘッダー内の ID を介して配布する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。