HTTP ヘッダーと Application Load Balancer - Elastic Load Balancing

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

HTTP ヘッダーと Application Load Balancer

HTTP リクエストと HTTP レスポンスは、ヘッダーフィールドを使用して HTTP メッセージに関する情報を送信します。HTTP ヘッダーは自動的に追加されます。ヘッダーフィールドはコロンで区切られた名前と値のペアであり、キャリッジリターン (CR) とラインフィード (LF) で区切ります。HTTP ヘッダーフィールドの標準セットは、RFC 2616 の Message Headers で定義されています。アプリケーションで広く使用されている標準以外の HTTP ヘッダーもあります。標準以外の HTTP ヘッダーには、X-Forwarded というプレフィックスが付いている場合があります。Application Load Balancer では、次の X-Forwarded ヘッダーがサポートされます。

HTTP 接続の詳細については、Elastic Load Balancing ユーザーガイドRequest routing を参照してください。

X-Forwarded-For

X-Forwarded-For リクエストヘッダーは、HTTP または HTTPS ロードバランサーを使用する場合に、クライアントの IP アドレスを識別するのに役立ちます。ロードバランサーはクライアント/サーバー間のトラフィックをインターセプトするので、サーバーアクセスログにはロードバランサーの IP アドレスのみが含まれます。クライアントの IP アドレスを確認するには、routing.http.xff_header_processing.mode 属性を使用します。この属性を使用すると、Application Load Balancer がターゲットにリクエストを送信する前に、HTTP リクエストの X-Forwarded-For ヘッダーを変更、保持、削除できます。この属性に指定できる値は、appendpreserve、および remove です。この属性のデフォルト値は append です。

Append

デフォルトでは、Application Load Balancer は、クライアントの IP アドレスを X-Forwarded-For リクエストヘッダーに格納し、このヘッダーをサーバーに渡します。X-Forwarded-For リクエストヘッダーがオリジナルリクエストに含まれていない場合、ロードバランサーはリクエスト値としてクライアント IP アドレスを持つリクエストヘッダーを作成します。それ以外の場合、ロードバランサーはクライアント IP アドレスを既存のヘッダーに追加し、その後ヘッダーをサーバーに渡します。X-Forwarded-For リクエストヘッダーには、カンマで区切られた複数の IP アドレスを含めることができます。左端のアドレスは、リクエストが最初に行われたクライアント IP アドレスです。この後に、後続のプロキシ識別子が連なって続きます。

X-Forwarded-For リクエストヘッダーは以下のような形式です。

X-Forwarded-For: client-ip-address

以下に、IP アドレスが 203.0.113.7 であるクライアントの X-Forwarded-For リクエストヘッダーの例を示します。

X-Forwarded-For: 203.0.113.7

以下に、IPv6 アドレスが X-Forwarded-For であるクライアントの 2001:DB8::21f:5bff:febf:ce22:8a2e リクエストヘッダーの例を示します。

X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e

ロードバランサーでクライアントポート保持属性 (routing.http.xff_client_port.enabled) が有効になっている場合、X-Forwarded-For リクエストヘッダーには、client-ip-address の後にコロンで区切って client-port-number が含まれます。ヘッダーは、次のような形式になります。

IPv4 -- X-Forwarded-For: client-ip-address:client-port-number
IPv6 -- X-Forwarded-For: [client-ip-address]:client-port-number

IPv6 の場合、ロードバランサーが client-ip-address を既存のヘッダーに追加する際には、アドレスが角括弧で囲まれることに注意してください。

以下に、IPv4 アドレスが 12.34.56.78 で、ポート番号が 8080 であるクライアントの X-Forwarded-For リクエストヘッダーの例を示します。

X-Forwarded-For: 12.34.56.78:8080

以下に、IPv6 アドレスが 2001:db8:85a3:8d3:1319:8a2e:370:7348 で、ポート番号が 8080 であるクライアントの X-Forwarded-For リクエストヘッダーの例を示します。

X-Forwarded-For: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080

Preserve

属性で preserve モードを指定した場合、HTTP リクエストの X-Forwarded-For ヘッダーは、ターゲットに送信される前に変更されることはありません。

Remove

属性に remove モードを指定した場合、HTTP リクエストの X-Forwarded-For ヘッダーは、ターゲットに送信される前に削除されます。

注記

クライアントポート保持の属性を有効にし (routing.http.xff_client_port.enabled)、かつ routing.http.xff_header_processing.mode 属性 に preserve または remove を選択した場合、Application Load Balancer はクライアントポート保持属性を上書きします。選択したモードに応じて、X-Forwarded-For ヘッダーを変更せずにおくか削除するかして、ターゲットに送信します。

次の表では、appendpreserveremove モードのいずれかを選択した際にターゲットが受信する X-Forwarded-For ヘッダーの例を示します。この例では、ラストホップの IP アドレスは 127.0.0.1 です。

リクエストの説明

リクエストの例

XFF append モード XFF preserve モード XFF remove モード
リクエストは XFF ヘッダーを含まずに送信されます GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 [なし] [なし]
リクエストは、XFF ヘッダーとクライアント IP アドレスを含んで送信されます。 GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4 X-Forwarded-For: 127.0.0.4, 127.0.0.1 X-Forwarded-For: 127.0.0.4 [なし]
リクエストは、複数のクライアント IP アドレスを含む XFF ヘッダーを含んで送信されます。 GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4, 127.0.0.8 X-Forwarded-For: 127.0.0.4, 127.0.0.8, 127.0.0.1 X-Forwarded-For: 127.0.0.4, 127.0.0.8 [なし]
New EC2 experience
コンソールを使用して X-Forwarded-For ヘッダーの変更、保持、削除を行うには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [属性] タブで、[編集] を選択します。

  5. [トラフィックの設定] セクションの [パケット処理] にある [X-Forwarded-For ヘッダー] で、[付加] (デフォルト)、[保持]、または [削除] を選択します。

  6. [変更を保存]をクリックします。

Old EC2 experience
コンソールを使用して X-Forwarded-For ヘッダーの変更、保持、削除を行うには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーを選択します。

  4. [属性] タブで、[編集] を選択します。

  5. [X-Forwarded-For ヘッダー] の場合、[追加] (デフォルト)、[保存]、または [削除] を選択します。

  6. [変更を保存]をクリックします。

X-Forwarded-Forを使用してヘッダーを変更、保存、または削除するには AWS CLI

modify-load-balancer-attributesrouting.http.xff_header_processing.modeコマンドを属性とともに使用します。

X-Forwarded-Proto

X-Forwarded-Proto リクエストヘッダーを使用すると、クライアントがロードバランサーへの接続に使用したプロトコル (HTTP または HTTPS) を識別することができます。サーバーアクセスログには、サーバーとロードバランサーの間で使用されたプロトコルのみが含まれ、クライアントとロードバランサーの間で使用されたプロトコルに関する情報は含まれません。クライアントとロードバランサーの間で使用されたプロトコルを判別するには、X-Forwarded-Proto リクエストヘッダーを使用します。Elastic Load Balancing は、クライアントとロードバランサーの間で使用されたプロトコルを X-Forwarded-Proto リクエストヘッダーに格納し、このヘッダーをサーバーに渡します。

アプリケーションやウェブサイトは X-Forwarded-Proto リクエストヘッダーに格納されているプロトコルを使用して、適切な URL にリダイレクトする応答を生成できます。

X-Forwarded-Proto リクエストヘッダーは以下のような形式です。

X-Forwarded-Proto: originatingProtocol

次の例には、HTTPS リクエストとしてクライアントから発信されたリクエストの X-Forwarded-Proto リクエストヘッダーが含まれています。

X-Forwarded-Proto: https

X-Forwarded-Port

X-Forwarded-Port リクエストヘッダーは、ロードバランサーへの接続にクライアントが使用した送信先ポートを識別するために役立ちます。