微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:无效的HTTP_HOST标头:'/webapps/../gunicorn.sock'

在我昨晚部署我的Django应用程序后,我收到了大量奇怪的电子邮件

ERROR: Invalid HTTP_HOST header: '/webapps/example_com/run/gunicorn.sock

我确定这是与以下Nginxconfiguration有关:

upstream example_app_server { server unix:/webapps/example_com/run/gunicorn.sock fail_timeout=0; } server { listen 80; server_name example.com; client_max_body_size 4G; access_log /webapps/example_com/logs/Nginx-access.log; error_log /webapps/example_com/logs/Nginx-error.log; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://example_app_server; break; } } }

通过防火墙创build可见的本地服务器

破损的pipe道仅在第二次发送时closures套筒

如何使用socat proxy拦截Unix域套接字发送辅助数据?

select系统调用一个/ w应用程序中无限期地挂起。

C ++套接字窗口

select套接输出接口:SO_BINDTODEVICE vs绑定之前连接

检查连接是否打开或closures?(在Linux中的C)

Linux:如何更改进程可以打开的最大文件数?

Linux内核中的TCP调用stream程

PACKET_TX_RING只发送第一个数据包,然后不再做任何事情

我在django bug报告中找到了我的问题的答案。

proxy_set_header Host $http_host;

必须替换为:

proxy_set_header Host $host;

使Nginx通过正确的头,而不是在gunicorn套接字请求的页面是在Django警报。

这个人基于这个相同的职位来解释一下更多的事情。 这是他/她的解释:

…当向服务器发出请求并且HTTP主机为空时,Nginx将HTTP主机设置为gunicorn sock。

我可以使用curl生成这个错误

curl -H "HOST:" MY_DOMAIN_NAME -0 -v

这发送一个没有HTTP主机的请求。 -0会导致curl使用HTTP版本1.0。 如果你没有设置,请求将使用HTTP版本1.1,这将导致请求立即被拒绝,不会产生错误

解决的办法是用$ host替换$ http_host(就像在Stackoverflow中指出的那样)。 当缺少HTTP主机时,$ host将采用“server_name”指令的值。 这是一个有效的域名,是应该使用的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐