akh*_*wam 5 django nginx gunicorn
我正在尝试与Gunicorn一起配置nginx用于Django项目.nginx给我以下错误:
DisallowedHost at /
Invalid HTTP_HOST header: 'localhost:90,localhost:90'. The domain name provided is not valid according to RFC 1034/1035.
Run Code Online (Sandbox Code Playgroud)
这是我的nginx配置
server {
listen 90;
listen [::]:90;
server_name xxxx;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/user/djangopro/djangoapp;
}
location / {
include proxy_params;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_buffering off;
proxy_redirect off;
proxy_pass http://localhost:8200/;
}
}
Run Code Online (Sandbox Code Playgroud)
Gunicorn正在为该网站提供服务localhost:8200.谁能告诉我导致错误的原因是什么?
我遇到了同样的错误。我猜你可能是从 Flask 转换到 Django 的?如果您proxy_set_header Host $http_host;从配置中删除该行,它应该可以工作(它修复了我的错误)。我认为这样做是将请求的 ip 地址和代理 ip 地址堆叠在一起,而 Django 只想要一个 ip 地址,而不是一个列表。请参阅此 Django 票证:https : //code.djangoproject.com/ticket/28028
我猜你已经弄明白了(因为已经几个月了),但我仍在回答以节省我刚刚用谷歌搜索的 2 个小时:)
编辑:我想澄清一下,问题来自于同时拥有include proxy_params;和proxy_set_header Host $http_host;设置。默认proxy_params已经proxy_set_header Host $http_host;包含了,所以它会设置主机两次,因此是两个主机的列表。如果您使用的是 Ubuntu,请查看该proxy_params文件/etc/nginx/proxy_params(在其他机器上将是类似的路径)。