使用Gunicorn+Nginx在AWS EC2部署Django应用无法访问求助
问题排查及解决方案
核心问题定位
- 最直接的报错原因是你在Nginx配置中同时监听了80(HTTP)和443(HTTPS)端口,但未配置任何SSL证书,Safari默认会优先尝试HTTPS连接,无有效证书时就会抛出「无法建立安全连接」的错误。
- 其次你的gunicorn服务配置存在语法错误,仅检查socket状态无法确认服务实际运行正常。
分步排查整改
- 修复gunicorn配置错误
你的gunicorn服务配置中WorkingDirectory行末尾多了无效的空格和斜杠,会导致服务启动失败:
# 错误写法 WorkingDirectory=/home/ubuntu/djangoapp1 / # 修正为 WorkingDirectory=/home/ubuntu/djangoapp1
修改后执行命令重载配置并重启服务,确认服务状态正常:
sudo systemctl daemon-reload sudo systemctl restart gunicorn sudo systemctl status gunicorn
- 临时关闭HTTPS监听验证HTTP连通性
先注释或删除Nginx配置中的listen 443;行,先验证HTTP服务可以正常访问,避免证书问题干扰排查。
修改后先校验Nginx配置语法正确性,再重启服务:
sudo nginx -t sudo systemctl restart nginx
访问时不要直接在浏览器输入IP,手动指定HTTP协议:http://你的EC2实例公网IP,避免Safari默认跳转HTTPS。
- 检查系统防火墙规则
Ubuntu 18.04默认自带ufw防火墙,即使AWS安全组放通了端口,ufw未放行也会导致访问失败,执行以下命令放行Nginx端口:
sudo ufw allow 'Nginx Full'
- 逐层验证连通性
- 先在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
相关产品推荐
相关产品推荐

