翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HTTP ヘッダーと Application Load Balancer
HTTP リクエストと HTTP レスポンスは、ヘッダーフィールドを使用して HTTP メッセージに関する情報を送信します。HTTP ヘッダーは自動的に追加されます。ヘッダーフィールドはコロンで区切られた名前と値のペアであり、キャリッジリターン (CR) とラインフィード (LF) で区切ります。HTTP ヘッダーフィールドの標準セットは、RFC 2616 の Message HeadersX-Forwarded
というプレフィックスが付いている場合があります。Application Load Balancer では、次の X-Forwarded
ヘッダーがサポートされます。
HTTP 接続の詳細については、Elastic Load Balancing ユーザーガイドの Request routing を参照してください。
X-Forwarded ヘッダー
X-Forwarded-For
X-Forwarded-For
リクエストヘッダーは、HTTP または HTTPS ロードバランサーを使用する場合に、クライアントの IP アドレスを識別するのに役立ちます。ロードバランサーはクライアント/サーバー間のトラフィックをインターセプトするので、サーバーアクセスログにはロードバランサーの IP アドレスのみが含まれます。クライアントの IP アドレスを確認するには、routing.http.xff_header_processing.mode
属性を使用します。この属性を使用すると、Application Load Balancer がターゲットにリクエストを送信する前に、HTTP リクエストの X-Forwarded-For
ヘッダーを変更、保持、削除できます。この属性に指定できる値は、append
、preserve
、および 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
ヘッダーを変更せずにおくか削除するかして、ターゲットに送信します。
次の表では、append
、preserve
、remove
モードのいずれかを選択した際にターゲットが受信する 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 |
[なし] |
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
リクエストヘッダーは、ロードバランサーへの接続にクライアントが使用した送信先ポートを識別するために役立ちます。