VPS部署Django应用出现502 Bad Gateway错误是什么原因?
502 Bad Gateway错误排查点
你当前配置存在多处路径不匹配、配置错误问题,逐一排查修复即可:
1. Supervisor配置指向错误
你的/etc/supervisor/conf.d/sqh.conf中command配置错误:
当前直接指向了gunicorn二进制文件,没有传入任何启动参数,也没有指向你写的启动脚本,导致Gunicorn根本无法正常启动Django项目,也不会生成socket文件。
修复方式二选一:
- 方案1:直接把启动参数写在supervisor配置中,替换command为:
command=/home/admin/legaland/virtualenvs/legaland_env/bin/gunicorn django_project.wsgi:application --name django_project --workers 3 --user=admin --group=admin --bind=unix:/home/admin/legaland/run/gunicorn.sock --log-level=error --log-file=-
- 方案2:将你写的启动脚本保存为独立文件(比如
/home/admin/legaland/start_gunicorn.sh),赋予可执行权限chmod +x /home/admin/legaland/start_gunicorn.sh,再将command改为:
command=/home/admin/legaland/start_gunicorn.sh
2. 启动脚本路径全部不匹配
你写的Gunicorn启动脚本里所有路径都是教程示例的/home/django/路径,和你实际的/home/admin/legaland/路径完全不符:
- 把
DIR=/home/django/django_project改为你实际的Django项目根目录路径 - 把
BIND=unix:/home/django/run/gunicorn.sock改为BIND=unix:/home/admin/legaland/run/gunicorn.sock - 激活虚拟环境的路径改为实际路径:
source /home/admin/legaland/virtualenvs/legaland_env/bin/activate - 执行Gunicorn的路径改为:
exec /home/admin/legaland/virtualenvs/legaland_env/bin/gunicorn DJANGO_SETTINGS_MODULE和DJANGO_WSGI_MODULE也替换为你实际项目的对应配置名称
3. Socket文件权限&目录问题
- 先手动创建socket存放目录:
mkdir -p /home/admin/legaland/run,并给admin用户赋权:chown admin:admin /home/admin/legaland/run - 确保Nginx运行用户(默认是www-data)有sock文件的访问权限,可临时给目录加读写权限测试:
chmod 775 /home/admin/legaland/run
4. Nginx配置瑕疵
server_name字段为空,需要填写你服务器的公网IP或者绑定的域名,否则Nginx可能无法正确匹配请求。
验证步骤
- 重新加载supervisor配置:
supervisorctl reread && supervisorctl update,查看服务状态:supervisorctl status sqh,确认状态为RUNNING - 检查
/home/admin/legaland/run/目录下是否生成了gunicorn.sock文件 - 验证Nginx配置是否合法:
nginx -t,重载配置:systemctl reload nginx - 如果还是报错,查看两个日志定位具体问题:
- Gunicorn日志:
/home/admin/legaland/gunicorn-error.log - Nginx错误日志:
/home/admin/legaland/logs/nginx-error.log
- Gunicorn日志:
内容的提问来源于stack exchange,提问作者Hamedio
相关产品推荐
相关产品推荐

