Global Accelerator (GA) は、Proxy プロトコルをサポートしています。 このトピックでは、Proxy プロトコルを使用してクライアントの送信元 IP アドレスを保持保持する方法について説明します。

始める前に

クライアントの送信元 IP アドレスを保存する前に、以下の準備が整っていることを確認してください。
  • クライアントの送信元 IP アドレス保持機能は、ホワイトリストに追加されたユーザーのみ使用できます。 ホワイトリストに存在しないユーザーがこの機能を使用する必要がある場合は、チケットを起票してください。 詳細については、 「」「チケットの起票」「」をご参照ください。
  • リスナーを作成済みであること。 詳細については、「リスナーの作成」をご参照ください。

このタスクについて

Proxy プロトコルは、インターネットで使用されるプロトコルのひとつです。 クライアントに関する情報を取得するために、TCP 接続リクエストに Proxy プロトコルヘッダーが追加されます。 このプロトコルは、オリジンがクライアントに関する実際の情報を取得する必要がある複雑な環境で使用されます。

受信側は、完全で正しい Proxy プロトコルヘッダーを受信した後でデータを処理できます。 サーバー側では、Proxy プロトコルヘッダーを含むリクエストと、Proxy プロトコルヘッダーを除外するリクエストを同じリスニングポートで同時に受信できません。 最初に受信したデータパケットが Proxy プロトコル形式に準拠していない場合、サーバーはクライアントとの接続を終了します。

オリジンが Alibaba Cloud によって提供されるレイヤー 7 (HTTP プロトコルおよび HTTPS プロトコル) 負荷分散サービスを使用している場合、Proxy プロトコルを使用してクライアントのソースIPアドレスを保持することはできません。 オリジンが他のクラウドサービスプロバイダーによって提供された、またはユーザーが作成したレイヤー7 (HTTP プロトコルおよび HTTPS プロトコル) 負荷分散サービスを使用している場合、オリジンがProxy プロトコルの解析を許可しているかどうかを確認する必要があります。 Proxy プロトコルが解析可能であることが確認できた場合、クライアントの送信元 IP アドレス保持機能を有効化します。

手順1:クライアントの送信元 IP アドレスの保持を有効にする

OSS でクライアントの送信元 IP アドレス保持機能を有効にするには、以下の操作を実行します。

  1. [インスタンス] ページで、対象の GA インスタンスの[操作] 列に表示される[リスナーの構成] をクリックします。
  2. [リスナー] タブで、対象のリスナーの [操作] 列に表示される[設定] をクリックします。
  3. [リスナーとプロトコルの構成]手順で、クライアント IP の保持をオンにします。 [次へ] をクリックします。
    クライアント IP の保持
  4. [エンドポイントグループの設定]ステップで、[次へ] をクリックします。
  5. [設定の確認] ステップで、[次へ] をクリックします。

手順 2:オリジンの Proxy プロトコルを設定する

オリジンの Proxy プロトコルを設定すると、Proxy プロトコルヘッダーを含むリクエストのみ許可されます。

以下のコードは HTTP を例を使用して、NGINX が Proxy プロトコルヘッダーを解析して送信元 IP アドレスに関する詳細情報を取得し、X-Forwarded-For に送信元 IP アドレス情報を追加する方法を示しています。 オリジンはクライアントの送信元 IP アドレスを取得できます。
upstream example.com {
  server 10.xx.xx.42:9000   max_fails=200 fail_timeout=10;
  keepalive 2000;
}

server {
    listen                            80 proxy_protocol;                    ## Enable the parsing of the proxy_protocol header
    server_name                       example.com;
    keepalive_timeout                 60;
    include                           global.conf;
    include                           error_pages.conf;

    proxy_set_header                  X-Forwarded-For $proxy_protocol_addr; ## Add the HTTP header** when you send the request to the backend server.
    proxy_set_header                  X-Real-PORT $remote_port;


    location /dispatch {
      set $switch "example.com";
      proxy_pass                      http://$switch;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
   }
}
クライアントは、高速化された IP アドレスを使用してオリジンのサービスにアクセスします。 NGINX がProxy プロトコルヘッダーを含むリクエストを処理した後、オリジンはクライアントの送信元 IP アドレス情報を HTTP ヘッダーのX-Forward-For で確認できます。 X-Forward-For の値は次の形式です。
X-Forwarded-For: source IP address of the client, IP address of the proxy server 1, IP address of the proxy server 2,...

最初の IP アドレスが、クライアントの送信元 IP アドレスです。