首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效的HTTP_HOST头。根据RFC 1034/1035,提供的域名无效。

问无效的HTTP_HOST头。根据RFC 1034/1035,提供的域名无效。
EN

Server Fault用户
提问于 2021-01-16 09:31:45
回答 3查看 16.2K关注 0票数 9

我的服务器上出现了无效的HTTP_HOST头错误。我不明白为什么会发生这种事,也不明白如何解决。每次发生这种情况,后端都会停止工作,我必须重新启动服务器。

任何帮助都将不胜感激。

提前感谢!

FYI :服务器是aws ec2;前端是角形的,后端是django/drf,带火绒角。server和DRF都部署在同一台服务器上。

错误0。如果我不在nginx.conf中设置主机变量,就会多次出现以下错误。无效的HTTP_HOST头:'/run/gunicorn.sock:‘。根据RFC 1034/1035,提供的域名无效。

如果我在nginx.conf中设置主机变量,我会得到以下错误。

错误1. proxy_set_header主机$http_host;

无效的HTTP_HOST头:'127.0.0.1:8000,127.0.0.1:8000‘。根据RFC 1034/1035,提供的域名无效。

错误2. proxy_set_header主机$host;

无效的HTTP_HOST头:'127.0.0.1:8000,127.0.0.1‘。根据RFC 1034/1035,提供的域名无效。

错误3. proxy_set_header主机$server_name;

无效的HTTP_HOST头:'13.234.187.18,13.234.187.18:8000‘。根据RFC 1034/1035,提供的域名无效。

nginx.conf如下所示。

代码语言:javascript
复制
server {
    listen 8000;
    server_name 13.234.187.18;

    location / {
        proxy_set_header Host $host;
        include proxy_params;

        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

我在nginx网站上找到了下面的代码。它能解决这个问题吗?http://nginx.org/en/docs/http/request_processing.html

代码语言:javascript
复制
server {
    listen      80;
    server_name "";
    return      444;
}
EN

回答 3

Server Fault用户

回答已采纳

发布于 2021-01-16 21:56:05

问题是,您已经导致主机头被包含了两次。

代码语言:javascript
复制
        proxy_set_header Host $host;
        include proxy_params;

查看proxy_params文件将显示它已经设置在那里。再次设置它将使这两个值用逗号连接。

在该文件中,您将发现在包含该文件时将使用的预置标头。您不需要在自己的配置中重复其中的任何一行。

代码语言:javascript
复制
ubuntu@vmtest-ubuntu2004:~$ cat /etc/nginx/proxy_params
proxy_set_header Host $http_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 $scheme;

您可以从配置中删除自己的附加proxy_set_header Host $host;。

票数 6
EN

Server Fault用户

发布于 2022-07-14 12:14:24

我也有类似的问题,但是,我在我的Nginx配置文件中没有proxy_set_header,它只是include proxy_params;。

根据Django文档,当您的站点位于代理服务器后面时,Django将拒绝来自代理的请求,认为它们不安全,尽管客户机和代理之间的连接可能是安全的。因此,解决方案是更新Django settings.py文件并添加以下内容:

代码语言:javascript
复制
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

您可以在这里进一步阅读有关此问题的文章:https://docs.djangoproject.com/en/3.1/ref/settings/#secure-proxy-ssl-header

票数 5
EN

Server Fault用户

发布于 2023-05-01 17:05:09

但是,我仍然遇到了类似的问题:(1)我的Nginx配置文件中没有proxy_set_header,它只是包含了proxy_params;(2) proxy_params=(‘https’,'https')包含在setting.py中。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1050068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档