ホームページ >運用・保守 >Nginx >Nginx がヘッダー内の ID を介して配布する方法

Nginx がヘッダー内の ID を介して配布する方法

WBOY
WBOY転載
2023-05-11 16:01:131084ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。