AWS EC2部署Django项目配置SSL后无法加载问题咨询
Django + AWS EC2 + SSL 配置后无法访问的排查方案
以下是针对你遇到的SSL配置后网站加载超时无法访问问题的具体排查步骤:
1. 检查EC2安全组端口开放
- 必须确保EC2安全组的入站规则开放了443(HTTPS)端口,来源可设为
0.0.0.0/0(允许所有IP访问)或者你指定的范围。很多人配置SSL后漏开443端口,直接导致外部请求无法到达实例。 - 同时确认80(HTTP)端口的入站规则也正常,因为你的Nginx配置里有HTTP转HTTPS的跳转逻辑。
2. 验证Unix Socket的权限与WSGI服务状态
- 检查
/home/ubuntu/lsh_bank/app.sock的权限:Nginx进程需要有读写这个socket的权限,执行命令查看:ls -l /home/ubuntu/lsh_bank/app.sock - 如果权限不对,调整所属用户/组(默认Nginx运行用户是
www-data):sudo chown www-data:www-data /home/ubuntu/lsh_bank/app.sock sudo chmod 660 /home/ubuntu/lsh_bank/app.sock - 确认你的WSGI服务(比如Gunicorn)是否正常运行并监听该socket,查看服务日志:
如果服务未启动或报错,先修复WSGI服务的问题。sudo journalctl -u gunicorn.service # 替换成你的WSGI服务名称
3. 检查Nginx配置与运行状态
- 先验证Nginx配置语法是否正确:
sudo nginx -t - 若配置无错误,重启Nginx服务:
sudo systemctl restart nginx - 查看Nginx错误日志,定位具体问题:
日志里会明确提示是否是socket连接失败、SSL证书加载错误等问题。sudo tail -f /var/log/nginx/error.log
4. 确认SSL证书的有效性与权限
- 检查Certbot生成的证书文件是否存在:
ls -l /etc/letsencrypt/live/example.com/ - 确保Nginx进程能读取这些证书文件,证书目录的权限需允许
www-data用户访问,若权限不足可调整:sudo chmod -R 755 /etc/letsencrypt/live/
5. 排查域名解析问题
- 用
nslookup或dig命令验证域名是否正确指向EC2公网IP:nslookup example.com - 若解析不正确,检查你的DNS服务商的记录配置;若解析正确但仍无法访问,可能是DNS缓存导致,可清除本地DNS缓存后重试。
6. 本地实例内测试访问
- 在EC2实例内部,用curl测试HTTPS访问是否正常:
如果本地能正常返回内容,说明问题出在外部网络(安全组、DNS);如果本地也无法访问,说明实例内部的Nginx或WSGI服务存在故障。curl -v https://localhost
内容的提问来源于stack exchange,提问作者M.Gafaru
相关产品推荐
相关产品推荐

