You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godaddy DNS指向AWS EC2后,Django+Gunicorn+Nginx配置400错误求助

解决域名访问返回Bad Request (400) 的方案

看起来你遇到的是Django部署中很常见的域名权限问题,结合你的配置信息,我整理了分步解决办法:

1. 首先修正Django的ALLOWED_HOSTS配置

Bad Request 400最直接的原因就是Django没有把你的域名加入允许访问的主机列表。你当前的settings.py里只加了EC2的IP,必须把域名也加进去:

打开你的settings.py文件,修改ALLOWED_HOSTS这一行:

ALLOWED_HOSTS = ['11.222.33.444', 'domainname.com', 'www.domainname.com']

修改完成后,一定要重启Gunicorn让配置生效,比如用systemd管理的话执行:

sudo systemctl restart gunicorn

2. 补全并验证Nginx配置

你提供的Nginx配置片段不完整,确保配置包含反向代理到Gunicorn的核心部分,完整配置示例如下:

server {
    listen 80;
    server_name 11.222.33.444 domainname.com www.domainname.com;

    # 处理favicon,避免日志冗余
    location = /favicon.ico { access_log off; log_not_found off; }
    
    # 处理静态文件(如果你的Django项目有静态资源的话)
    location /static/ {
        root /path/to/your/django/project;  # 替换成你的Django项目根目录路径
    }

    # 核心反向代理配置,把请求转发给Gunicorn
    location / {
        proxy_set_header Host $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_pass http://127.0.0.1:8000;  # 这里要和Gunicorn监听的地址端口一致
    }
}

配置写完后,先测试Nginx配置是否合法:

sudo nginx -t

如果输出test is successful,就重启Nginx:

sudo systemctl restart nginx

3. 确认DNS解析完全生效

虽然你说DNS工具显示IP正确,但本地设备可能还缓存着旧的解析记录。可以在本地终端用命令再验证一遍:

nslookup domainname.com
nslookup www.domainname.com

确保两次返回的IP都是你的EC2实例IP。如果本地还是不对,清空本地DNS缓存:

  • Windows:ipconfig /flushdns
  • macOS:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • Linux:根据发行版不同,比如Ubuntu用sudo systemd-resolve --flush-caches

4. 检查Gunicorn的监听设置

确保Gunicorn是监听在本地回环地址(比如127.0.0.1:8000),而不是只绑定EC2的公网IP。启动Gunicorn的命令应该类似:

gunicorn --bind 127.0.0.1:8000 your_project.wsgi:application

如果是用systemd服务管理Gunicorn,也要检查服务配置文件里的ExecStart行,确保绑定地址和Nginx的proxy_pass一致。

5. 查看日志定位细节

如果以上步骤都做完还是有问题,就去看日志找线索:

  • Django日志:看你项目里配置的日志文件,或者settings.py中LOGGING指定的路径
  • Gunicorn日志:用journalctl -u gunicorn查看(如果是systemd管理的话)
  • Nginx错误日志:一般在/var/log/nginx/error.log

日志里会有更具体的错误信息,帮你精准排查。

内容的提问来源于stack exchange,提问作者Daniel Yanez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:22:29