跳至内容

如何配置应用程序负载均衡器以删除无效的标头?

1 分钟阅读
0

我想从我的应用程序负载均衡器中删除无效的标头。

简短描述

应用程序负载均衡器使用 routing.http.drop_invalid_header_fields.enabled 属性删除无效的 HTTP 标头。该属性的默认值为 FALSE。

如果该属性的默认值设置为 TRUE,则应用程序负载均衡器会删除无效的 HTTP 标头。如果该属性的值为 FALSE,则负载均衡器使用原始请求将标头路由到目标。
**注意:**弹性负载均衡要求所有注册的消息标头名称都符合正则表达式 [-A-Za-z0-9]+。每个标头名称都由字母数字字符或连字符组成。

验证属性 drop_invalid_header_field 是否有效

在服务器端捕获数据包。禁用该属性后,应用程序负载均衡器会将无效的 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 捕获。应用程序负载均衡器将无效的标头转发到后端服务器。

使用 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

激活该属性后,应用程序负载均衡器将请求发送到后端服务器。但是,如服务器端输出所示,负载均衡器会删除无效的标头。

相关信息

负载均衡器属性

AWS 官方已更新 2 年前