Application Load Balancer から有効でないヘッダーを削除したいです。
簡単な説明
Application Load Balancer は、routing.http.drop_invalid_header_fields.enabled 属性を使用して、有効でない HTTP ヘッダーを削除します。この属性のデフォルト値は FALSE です。
属性のデフォルト値を TRUE に設定すると、Application Load Balancer は有効でない HTTP ヘッダーを削除します。属性の値が FALSE の場合、ロードバランサーはヘッダーを元のリクエストのターゲットにルーティングします。
注: Elastic Load Balancing では、登録されているすべてのメッセージヘッダー名が正規表現 [-A-Za-z0-9]+ に準拠している必要があります。各ヘッダー名は英数字またはハイフンで構成されています。
属性 drop_invalid_header_field が機能することを確認する
サーバー側でパケットキャプチャを行います。この属性が非アクティブ化されると、Application Load Balancer は有効でない HTTP ヘッダーをバックエンドサーバーに転送します。この属性がアクティブ化されると、ロードバランサーは有効なヘッダーのみをバックエンドサーバーに転送します。無効なヘッダーは削除されます。
Wireshark を使用してサーバー側の HTTP ヘッダーを確認する (非アクティブ化された属性)
クライアントマシンからの CURL リクエストに +agent: world というヘッダーを渡します。このヘッダーでは、無効な値を使用していることに注意してください。
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
X-Forwarded-For: x.x.x.x\r\n
X-Forwarded-Proto: http\r\n
X-Forwarded-Port: 80\r\n
Host: xxxxxxxx.elb.amazonaws.com\r\n
X-Amzn-Trace-Id: Root=xxxxxxxxxx\r\n
User-Agent: curl/8.4.0\r\n
Accept: */*\r\n
+agent: world\r\n
この出力は、サーバー側の Wireshark キャプチャからのものです。Application Load Balancer は、無効なヘッダーをバックエンドサーバーに転送します。
Wireshark を使用してサーバー側の HTTP ヘッダーを確認する (有効化された属性)
クライアントマシンからの CURL リクエストに +agent: world というヘッダーを渡します。このヘッダーでは、無効な値を使用していることに注意してください。
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
X-Forwarded-For: x.x.x.x\r\n
X-Forwarded-Proto: http\r\n
X-Forwarded-Port: 80\r\n
Host: xxxxxxxx.elb.amazonaws.com\r\n
X-Amzn-Trace-Id: Root=xxxxxxxxxx\r\n
User-Agent: curl/8.4.0\r\n
Accept: */*\r\n
属性がアクティブ化されると、Application Load Balancer はリクエストをバックエンドサーバーに送信します。ただし、このサーバー側の出力が示すように、ロードバランサーは無効なヘッダーを削除します。
関連情報
ロードバランサーの属性