Django配置正确仍报DisallowedHost:Invalid HTTP_HOST header问题求助
问题原因分析
错误提示中HTTP_HOST为重复的IP地址(89.168.121.222,89.168.121.222),结合你的配置,核心问题出在两处:
1. Nginx重复设置Host请求头
你的Nginx配置里,include proxy_params; 已经包含了默认的Host头设置(Ubuntu默认的proxy_params文件中存在proxy_set_header Host $http_host;),但你又手动添加了一遍相同的配置,导致请求头被重复拼接,最终传给Django的Host格式异常,触发DisallowedHost错误。
2. ALLOWED_HOSTS配置不规范
settings.py中IP地址末尾多了一个点(89.168.121.222.),不符合RFC域名规范,Django会判定为无效主机名。
解决方案
按以下步骤逐一修正:
步骤1:调整Nginx配置
打开/etc/nginx/sites-available/familyapp,删除手动添加的proxy_set_header Host $http_host;行,保留include proxy_params;即可。修改后的location /块如下:
location / { include proxy_params; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://unix:/home/ubuntu/sockets/gunicorn.sock; }
步骤2:修正ALLOWED_HOSTS
打开Django项目的settings.py,移除IP地址末尾的点:
ALLOWED_HOSTS = ['89.168.121.222', 'localhost']
步骤3:补全Gunicorn启动命令
确保使用完整的启动命令(替换your_project_name为实际包含wsgi.py的项目目录名):
gunicorn --bind unix:/home/ubuntu/sockets/gunicorn.sock your_project_name.wsgi:application
步骤4:重启服务
执行命令验证配置并重启服务:
sudo nginx -t sudo systemctl restart nginx sudo systemctl restart gunicorn
验证
再次通过公网IP访问网站,DisallowedHost错误应已消除。
内容的提问来源于stack exchange,提问作者Lennard
相关产品推荐
相关产品推荐

