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

启用HTTPS后EC2上Django后端/admin/页面404问题排查

问题排查与解决方法

你的主nginx.conf配置没有问题,不需要修改。问题大概率出在Certbot生成的HTTPS虚拟主机配置里,或者相关转发逻辑上,按以下步骤排查:

1. 检查HTTPS站点配置文件

打开/etc/nginx/sites-enabled/下的域名配置文件(比如your-domain.conf),对比HTTP和HTTPS的server块配置:

  • 确认HTTPS的server块中存在正确转发请求到Gunicorn的location /规则,类似:
    location / {
        proxy_pass http://unix:/path/to/your/gunicorn.sock; # 或http://127.0.0.1:8000,根据你的Gunicorn配置调整
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
  • 如果HTTPS配置里缺少这个规则,Nginx会直接返回404,因为没有把请求转发给Django后端。

2. 确认静态/媒体文件配置(如果有)

如果你的Django admin依赖静态文件,确保HTTPS配置中也包含了静态文件的处理规则:

location /static/ {
    root /path/to/your/django/project; # 替换为你的Django项目根目录
}

location /media/ {
    root /path/to/your/django/project;
}

3. 检查Django的ALLOWED_HOSTS设置

打开Django项目的settings.py,确保你的域名(比如your-domain.com)在ALLOWED_HOSTS列表中:

ALLOWED_HOSTS = ['your-domain.com', 'localhost']

4. 查看Nginx错误日志定位问题

执行以下命令查看实时错误日志:

sudo tail -f /var/log/nginx/error.log

然后访问https://<域名>/admin/,查看日志中输出的错误信息,比如Gunicorn sock文件权限不足、proxy_pass路径错误等。

5. 重启服务生效配置

修改任何配置后,重启Nginx和Gunicorn:

sudo systemctl restart nginx
sudo systemctl restart gunicorn

内容的提问来源于stack exchange,提问作者Jake Mulhern

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:43