当Nginx反向代理位于前面时,告诉lighttpd使用的协议(HTTPS)

时间:2019-02-19 20:38:34

标签: https lighttpd web.py nginx-reverse-proxy

我有一个Nginx反向代理重定向到同一台机器上的lighttpd服务器。此反向代理在HTTPS上有效,因此我想告诉lighttpd HTTPS被用作协议而不是HTTP。这是我的Nginx配置。

try...except

lighttpd服务器正在运行使用 web.py 模块的python应用程序,但server { server_name mydomain.com; merge_slashes off; rewrite ^(.*?)//+(.*?)$ $1/$2 permanent; location / { proxy_pass http://localhost:8088/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Ssl on; } listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot # SSL settings } server { if ($host = mydomain.com) { return 301 https://$host$request_uri; } listen 80; listen [::]:80; } 返回的值仍应为 HTTP , > HTTPS 。看来lighttpd会忽略Nginx发送的 X-Forwarded-Proto 标头。

我在做什么错?是否还有其他配置需要完成? 谢谢。

1 个答案:

答案 0 :(得分:0)

您必须将lighttpd配置为信任来自上游的标头。在lighttpd中使用mod_extforward。参见https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModExtForward

nginx和lighttpd(通过mod_extforward)比上面的许多标头更好,都支持RFC 7239转发的标头。

https://www.nginx.com/resources/wiki/start/topics/examples/forwarded/

应该优先使用“转发”标头。