AWS ELB自定义标题Nginx

自定义HTTP头被删除的ELB的一个奇怪的行为。 我正在使用Nginx作为服务器,具有以下虚拟主机configuration:

server { listen 80; server_name example.com; location / { index index.html index.htm; add_header Custom Test; } } 

通过使用IP地址直接访问服务器,可以find标题“Custom:Test”。 但是一旦这个服务器驻留在ELB后面。 自定义标题不再显示。 我可以知道这是否与我的设置有关吗?

在回复的时候,我始终能够让ELB返回我测试过的所有Response头文件,包括带有_的头文件,不过我会试着回答这个问题。

从文档:

当您将HTTP(第7层)用于前端和后端连接时,您的负载均衡器会分析请求中的标头,并在将请求发送到后端实例之前终止连接。 […]

负载均衡器不支持所有的HTTP扩展。 如果负载均衡器由于意外的方法,响应代码或其他非标准HTTP 1.0 / 1.1实现而无法终止请求,则可能需要使用TCP侦听器。

这可能是ELB丢弃某些标题的结果。 没有一个确定的列表,它没有或者没有放弃,但是它意味着任何非RFC( non-standard HTTP 1.0/1.1 implementations

如果你需要一个自定义头部持久化的地方,那么你可以使用TCP LB。 你会失去像X-Forwarded-For(但你可以使用代理协议来获取这个信息)和会话粘性。

对于下划线的情况 – 这是有点不鼓励 (至少与Nginx或其他网络服务器)可能会有不同的行为。