このトピックでは、Application Load Balancer (ALB) でサポートされている追加の HTTP ヘッダーと、リスナーでそれらを設定する方法について説明します。これらのヘッダーを使用して、要件に基づいて特定の機能を実現できます。
ALB でサポートされるヘッダー
HTTP ヘッダーは、HTTP リクエストまたはレスポンスメッセージのヘッダーセクションにあるフィールドです。特定のニーズに合わせてヘッダーをカスタマイズでき、これにより Web サーバーやブラウザで追加の HTTP ヘッダーが使用されることがあります。次の表に、ALB がサポートする追加の HTTP ヘッダーとその機能を示します。
|
ヘッダーフィールド |
説明 |
リスナープロトコル |
|
X-Forwarded-For |
リスナーが
フォーマット:
実際のクライアント IP アドレスを取得する方法については、「バックエンドサーバーでのクライアント IP の取得」をご参照ください。 |
|
|
SLB-ID |
ALB インスタンスの ID を含む |
|
|
X-Forwarded-Proto |
クライアントがリスナーへの接続に使用したプロトコルを含む フォーマット:
典型的なユースケース:ALB インスタンスが HTTPS リスナーを使用し、リスナーとそのバックエンドサーバーグループ間の通信が HTTP を使用する場合。このシナリオでは、バックエンドサーバーは HTTP プロトコルでリクエストを受信します。バックエンドサーバーに HTTP を HTTPS に自動的にリダイレクトするルールが設定されている場合、クライアントが HTTP を使用していると誤って判断し、リダイレクトループが発生する可能性があります。 |
|
|
X-Forwarded-Port |
リクエストを受信したリスナーポートを含む フォーマット:
|
|
|
X-Forwarded-Host |
クライアントからリクエストされた元のホストを含む フォーマット:
|
|
|
X-Forwarded-Client-srcport |
クライアントの送信元ポートを含む フォーマット:
|
|
|
X-Forwarded-Clientcert-subjectdn |
このヘッダーを有効にした後、カスタム HTTP ヘッダー名を入力する必要があります。 |
HTTPS |
|
X-Forwarded-Clientcert-issuerdn |
このヘッダーを有効にした後、カスタム HTTP ヘッダー名を入力する必要があります。 |
HTTPS |
|
X-Forwarded-Clientcert-fingerprint |
このヘッダーを有効にした後、カスタム HTTP ヘッダー名を入力する必要があります。 |
HTTPS |
|
X-Forwarded-Clientcert-clientverify |
このヘッダーを有効にした後、カスタム HTTP ヘッダー名を入力する必要があります。 |
HTTPS |
上記の追加 HTTP ヘッダーは、リスナーレベルのスイッチを使用して設定します。有効にすると、ALB は対応するヘッダーをバックエンドサーバーに転送されるリクエストに自動的に追加します。元のリクエストプロトコルやポートの指定など、ヘッダー値をカスタマイズする必要がある場合は、転送ルールのヘッダー挿入アクションを使用して手動で設定できます。リスナーレベルのスイッチはほとんどのパススルーシナリオに適していますが、転送ルールはヘッダー値のきめ細かい制御が必要なシナリオに最適です。これらの設定は、それぞれリスナー設定と転送ルールエディターの [詳細設定] セクションにあります。
-
バックエンドサーバーが HTTP 仕様に従い、HTTP ヘッダーキーを大文字と小文字を区別しないものとして扱うことを推奨します。
-
ALB がバックエンドサーバーに転送する X-Forwarded-For ヘッダーは、常に大文字で始まります。
-
その他の追加 HTTP ヘッダーについては、クライアントリクエストにこれらのヘッダーのいずれかがすでに含まれている場合、ALB は転送時に元の大文字小文字の区別を保持します。それ以外の場合、ALB は上記の表に示されている大文字小文字の区別を使用してヘッダーを追加します。
-
-
X-Forwarded-Clientcert-subjectdn、X-Forwarded-Clientcert-issuerdn、X-Forwarded-Clientcert-fingerprint、またはX-Forwarded-Clientcert-clientverify を有効にする場合、カスタム HTTP ヘッダー名を次の予約済みフィールドのいずれかに設定することはできません:
slb-id,slb-ip,x-forwarded-for,x-forwarded-proto,x-forwarded-eip,x-forwarded-port,x-forwarded-client-srcport,x-forwarded-host,connection,upgrade,content-length,transfer-encoding,keep-alive,te,host,cookie,remoteip, orauthority。 -
コンソールでのヘッダーの追加
リスナー作成時のヘッダー追加
ALB コンソールにログインします。
-
上部メニューで、ALB インスタンスがデプロイされているリージョンを選択します。
-
次のいずれかの方法で、リスナー設定ウィザードを開きます。
-
インスタンス ページで、管理するインスタンスを見つけ、操作 列の リスナーの作成 をクリックします。
-
インスタンス ページで、対象インスタンスの ID をクリックします。リスナー タブで、リスナーの作成 をクリックします。
-
-
リスナーの設定 ウィザードで、次のパラメーターを設定し、次へ をクリックします。
パラメーター
説明
[リスナープロトコルの選択]
リスナーのプロトコルを選択します。
[詳細設定]
変更 をクリックして詳細設定を展開します。
[追加のHTTPヘッダー]
ビジネス要件に基づいて有効にする追加の HTTP ヘッダーを選択します。
説明このセクションでは、ヘッダーに関連するパラメーターのみを説明します。その他のパラメーターの詳細については、次のトピックをご参照ください。
-
画面の指示に従って、リスナーの作成を完了します。
既存リスナーへのヘッダー追加
ALB コンソールにログインします。
-
上部メニューで、ALB インスタンスがデプロイされているリージョンを選択します。
-
インスタンス ページで、対象インスタンスの ID をクリックします。
-
リスナー タブで、対象のリスナーを見つけ、操作 列の
>リスナーの変更 を選択します。 -
リスナーの変更 ダイアログボックスで、詳細設定 の右側にある 変更 をクリックします。
-
追加のHTTPヘッダー セクションで、必要に応じてヘッダーを有効または無効にし、保存 をクリックします。
API を使用したヘッダーの追加
リスナーを作成するときに追加のヘッダーを設定したり、既存のリスナーのヘッダー設定を変更したりできます。
-
リスナーの作成:CreateListener API を呼び出し、XForwardedForConfig パラメーターで関連設定を構成します。
-
既存のリスナーの変更:UpdateListenerAttribute API を呼び出して、XForwardedForConfig パラメーター内の設定を更新します。
関連ドキュメント
コンソール
-
ALB インスタンスを介して HTTP リクエストを転送するには、「HTTP リスナーの追加」をご参照ください。
-
ALB インスタンスを介して HTTPS リクエストを転送するには、「HTTPS リスナーの追加」をご参照ください。
-
ALB インスタンスを介して QUIC リクエストを転送するには、「QUIC リスナーの追加」をご参照ください。
API
-
CreateListener:HTTP、HTTPS、または QUIC リスナーを作成します。XForwardedForConfig パラメーターで HTTP ヘッダー関連の設定を構成することで、HTTP ヘッダーを追加できます。
-
UpdateListenerAttribute:リスナーの設定を更新します。XForwardedForConfig パラメーターを更新して、ヘッダー設定を変更できます。