启用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
相关产品推荐
相关产品推荐

