为什么proxy_set_header主机$ host;不再在nginx 1.8.0中工作?

时间:2015-07-17 18:53:44

标签: nginx proxy

我使用proxy_set_header Host $host;将主机头设置为原始请求主机。在nginx 1.4.1中,这工作正常。现在升级到1.8.0后,我得到的是本地IP而不是浏览器传递的主机。

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:0)

TL;博士;我不确定它何时发生变化,但更新版本的nginx - 而不是ssl_protocols ...; - 你的conf应该是:

proxy_ssl_server_name on; proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

来源:https://stackoverflow.com/a/25330027

===

如果你像我一样,你误读日志文件并看到host=example.com。这似乎意味着主机定义为nginx-conf即虚拟主机,而不是主机发送到源。

(启用error_log debug;显示主机标头已正确设置。)

日志文件还应包含“sslv3 alert handshake failure”之类的错误。

答案 1 :(得分:0)

使用proxy_set_header Host $http_host

如果proxy_set_header Host $host;不再有效,则$host的含义/行为可能已更改。 $http_host只是传递浏览器发送的内容。