无效的HTTP_HOST标头:'localhost:90,localhost:90'。根据RFC 1034/1035,提供的域名无效

问题描述 投票:5回答:1

我正在尝试与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.

这是我的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正常服务。谁能告诉我导致错误的原因是什么?

django nginx gunicorn
1个回答
1
投票

我得到了同样的错误。我猜你可能会从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上,请查看proxy_params中的/etc/nginx/proxy_params文件(在其他机器上将是类似的路径)。

© www.soinside.com 2019 - 2024. All rights reserved.