部署在AWS EC2的Django项目网站无法访问,gunicorn、nginx正常,安全组已放通HTTP/HTTPS
AWS EC2部署Django项目公网无法访问排查方案
- 首先确认EC2实例的公网IP/弹性IP是否正常,排查是否因实例重启导致公网IP发生变更,访问时使用的IP是否与当前实例公网IP一致
- 检查Nginx配置是否正确
- 确认Nginx配置中监听的端口为80/443,
server_name参数填写的是你访问站点使用的公网IP或域名 - 在EC2实例本地执行
curl 127.0.0.1:80,验证是否能正常返回Django站点内容,若本地可正常返回,则说明Nginx与gunicorn联动正常,问题出在公网访问链路 - 查看Nginx错误日志定位问题,默认日志路径为
/var/log/nginx/error.log
- 确认Nginx配置中监听的端口为80/443,
- 检查EC2实例所属子网的网络ACL规则,安全组为实例级别的访问控制,网络ACL为子网级别的访问控制,需要确认网络ACL已放行80、443端口的入站和出站流量
- 检查EC2实例操作系统内置的防火墙规则,确认已放行80、443端口
- Ubuntu系统执行
ufw status查看端口放行状态 - CentOS/RHEL系统执行
firewall-cmd --list-all查看端口放行状态
- Ubuntu系统执行
- 检查Django项目
settings.py中的ALLOWED_HOSTS配置,确认你访问站点使用的公网IP或域名已添加到配置列表中,未添加的情况下Django会直接返回400拒绝访问 - 若配置了HTTPS访问,检查SSL证书路径、域名匹配度、证书有效期是否正常
内容的提问来源于stack exchange,提问作者Tanmay Mondal
相关产品推荐
相关产品推荐

