Ubuntu部署Django应用后网站无法访问,求指导(Nginx/Gunicorn状态正常)
问题描述
已在Ubuntu系统部署Django应用,Nginx配置检测正常,Gunicorn Socket处于监听状态,但网站返回502 Bad Gateway错误。
当前状态信息
Nginx状态
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Gunicorn状态
● gunicorn.socket - gunicorn socket
Loaded: loaded (/etc/systemd/system/gunicorn.socket; enabled; vendor preset: enabled)
Active: active (listening) since Tue 2022-09-20 11:31:47 CEST; 1h 16min ago
Triggers: ● gunicorn.service
Listen: /run/gunicorn.sock (Stream)
Tasks: 0 (limit: 19140)
Memory: 0B
CGroup: /system.slice/gunicorn.socket
排查步骤
检查Gunicorn服务实际运行状态
Socket监听正常不代表服务已启动,执行命令确认:sudo systemctl status gunicorn.service若服务未启动,尝试启动并查看日志定位原因:
sudo systemctl start gunicorn.service sudo journalctl -u gunicorn.service验证Unix套接字权限
Nginx需要有权限访问/run/gunicorn.sock,检查权限:ls -l /run/gunicorn.sock确保所属用户组包含
www-data(Nginx运行用户),若权限异常,修改Gunicorn服务配置文件(通常为/etc/systemd/system/gunicorn.service),添加Group=www-data,然后重启服务:sudo systemctl daemon-reload sudo systemctl restart gunicorn.socket gunicorn.service核对Nginx代理配置
打开Nginx站点配置文件(一般在/etc/nginx/sites-available/目录下),确认proxy_pass指向正确的套接字路径:location / { proxy_pass http://unix:/run/gunicorn.sock; # 其他代理相关配置... }修改后重启Nginx生效:
sudo systemctl restart nginx查看Nginx错误日志
直接读取Nginx错误日志定位具体问题:sudo tail -f /var/log/nginx/error.log常见问题包括套接字无法访问、Gunicorn服务无响应等。
验证Django应用本身可用性
进入虚拟环境,启动Django开发服务器确认应用能正常运行:source /path/to/your/venv/bin/activate python manage.py runserver 0.0.0.0:8000若开发服务器无法启动,优先排查Django内部配置问题(如数据库连接、静态文件配置、依赖缺失等)。
内容的提问来源于stack exchange,提问作者fahad aleem

