ELB的一种奇怪行为,其中删除了自定义HTTP标头。我目前正在使用Nginx作为具有以下虚拟主机配置的服务器:
server {
listen 80;
server_name example.com;
location / {
index index.html index.htm;
add_header Custom Test;
}
}
通过使用IP地址直接访问服务器,可以找到标题“Custom:Test”。但是一旦这个服务器驻留在ELB后面。自定义标题不再显示。我可以知道这是否与我的设置有关?
答案 0 :(得分:3)
在回复时,我能够一直让ELB返回我测试过的所有响应标题 - 包括带有_的那些,但是无论如何我都会尝试回答这个问题。
来自文档:
当您对前端和后端连接使用HTTP(第7层)时,负载均衡器会解析请求中的标头并在将请求发送到后端实例之前终止连接。 [...]
负载均衡器不支持所有HTTP扩展。如果负载均衡器由于意外方法,响应代码或其他非标准HTTP 1.0 / 1.1实现而无法终止请求,则可能需要使用TCP侦听器。
这可能导致ELB丢弃一些标题。没有明确的列表,它有什么或不放弃,但它暗示任何非RFC(non-standard HTTP 1.0/1.1 implementations
)
如果您需要持久保留自定义标头,而您始终在观察它失败,那么您可以使用TCP LB。您将丢失X-Forwarded-For(但您可以使用Proxy协议获取此信息)和Session Stickiness。
对于下划线的情况 - 这是一个小discouraged(至少对于Nginx或其他网络服务器)可能有不同的行为。