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

使用Gunicorn+Nginx在AWS EC2部署Django应用无法访问求助

问题排查及解决方案

核心问题定位

  • 最直接的报错原因是你在Nginx配置中同时监听了80(HTTP)和443(HTTPS)端口,但未配置任何SSL证书,Safari默认会优先尝试HTTPS连接,无有效证书时就会抛出「无法建立安全连接」的错误。
  • 其次你的gunicorn服务配置存在语法错误,仅检查socket状态无法确认服务实际运行正常。

分步排查整改

  1. 修复gunicorn配置错误
    你的gunicorn服务配置中WorkingDirectory行末尾多了无效的空格和斜杠,会导致服务启动失败:
# 错误写法
WorkingDirectory=/home/ubuntu/djangoapp1 /
# 修正为
WorkingDirectory=/home/ubuntu/djangoapp1

修改后执行命令重载配置并重启服务,确认服务状态正常:

sudo systemctl daemon-reload
sudo systemctl restart gunicorn
sudo systemctl status gunicorn
  1. 临时关闭HTTPS监听验证HTTP连通性
    先注释或删除Nginx配置中的listen 443;行,先验证HTTP服务可以正常访问,避免证书问题干扰排查。
    修改后先校验Nginx配置语法正确性,再重启服务:
sudo nginx -t
sudo systemctl restart nginx

访问时不要直接在浏览器输入IP,手动指定HTTP协议:http://你的EC2实例公网IP,避免Safari默认跳转HTTPS。

  1. 检查系统防火墙规则
    Ubuntu 18.04默认自带ufw防火墙,即使AWS安全组放通了端口,ufw未放行也会导致访问失败,执行以下命令放行Nginx端口:
sudo ufw allow 'Nginx Full'
  1. 逐层验证连通性
  • 先在EC2实例本地执行curl http://127.0.0.1,如果能返回Django页面内容,说明后端服务和Nginx配置正常,问题出在外部网络/安全组层面
  • 如果本地curl报错,查看Nginx错误日志定位具体问题:sudo tail -n 20 /var/log/nginx/error.log

后续HTTPS配置注意事项

如果需要启用HTTPS访问,需要先申请对应域名/IP的SSL证书,在Nginx的443监听块中补充ssl_certificate、ssl_certificate_key等SSL相关配置,不能仅监听443端口就直接使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:45:02