2017-05-03 57 views
4

提供的域名无效我试图配置nginx以及Gunicorn的Django项目。 nginx的是给我下面的错误:无效的HTTP_HOST标头:'localhost:90,localhost:90'。根据RFC 1034/1035

DisallowedHost at/
Invalid HTTP_HOST header: 'localhost:90,localhost:90'. The domain name provided is not valid according to RFC 1034/1035. 

这是我的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/; 
     } 
    } 

Gunicorn在localhost:8200正常服务的网站。任何人都可以告诉我是什么导致了错误?

+0

为什么用'90'而不是'80'。任何理由? – itzMEonTV

+0

'HTTP_HOST'必须包含一个带有可选端口号的域名,而不是逗号分隔的域列表。我无法分辨为什么它被设置为无效值。 – knbk

+0

我需要改变= @ knbk –

回答

0

我得到了同样的错误。我猜你可能是从Flask转换到Djano来的?如果您从配置中删除proxy_set_header Host $http_host;行,它应该可以工作(它修复了我的错误)。我认为这样做会将请求的IP地址和代理IP地址堆叠在一起,而Django只需要一个IP地址,而不是一个列表。看到这个Djano票: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,请查看/etc/nginx/proxy_params中的proxy_params文件(其他机器上的路径类似)。

相关问题