【问题标题】:AWS ELB Custom Headers NginxAWS ELB 自定义标头 Nginx
【发布时间】:2015-04-17 15:41:09
【问题描述】:

ELB 的一种奇怪行为,其中自定义 HTTP 标头被丢弃。我目前使用 Nginx 作为服务器,虚拟主机配置如下:

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

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

【问题讨论】:

  • 我们遇到了同样的问题。似乎没有任何办法解决它。
  • 同样这里有些标题被丢弃,似乎是标准行为......
  • 我们也遇到了这个问题。有人找到解决方案了吗?
  • 我一直在尝试不同的自定义标题。到目前为止,我的观察表明包含下划线的标题(如 api_key: xxx)会被 ELB 删除,但没有下划线的标题(如 apikey: xxxapiKey: xxx 不会。

标签: amazon-web-services nginx amazon-elb


【解决方案1】:

在响应时,我能够始终如一地让 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(但您可以使用代理协议来获取此信息)和 Session Stickiness 之类的东西。

对于下划线的情况 - 这有点 discouraged(至少对于 Nginx 或其他网络服务器)可能有不同的行为。

【讨论】:

    猜你喜欢
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多