我使用proxy_set_header Host $host;
将主机头设置为原始请求主机。在nginx 1.4.1中,这工作正常。现在升级到1.8.0后,我得到的是本地IP而不是浏览器传递的主机。
为什么会发生这种情况,我该如何解决?
答案 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
只是传递浏览器发送的内容。