Digital Ocean VPS上Django站点域名访问报502,静态资源加载异常求助
结合你给出的配置和遇到的问题,我们拆解成两个核心问题逐一修复:
一、修复502 Bad Gateway错误
你的配置里有两处关键问题,加上Socket权限可能存在的隐患,导致Nginx无法正常转发请求到Gunicorn:
Server Name 不匹配
你的Nginx配置中server_name my_ip;,但实际访问的是example.com,这会让Nginx无法匹配到对应的server块,直接返回502。修改为你的域名:server_name example.com www.example.com;Gunicorn Socket权限问题
Gunicorn运行在www-data组,但生成的Finlit.sock文件权限可能不足,导致Nginx无法读取。可以在Gunicorn的启动命令中添加umask参数,确保Socket权限正确:ExecStart=/FINlit/venvforfinlit/bin/gunicorn --access-logfile - --workers 3 --bind unix:/FINlit/Finlit.sock --umask 007 Finlit.wsgi:application或者临时手动调整Socket权限测试:
sudo chmod 777 /FINlit/Finlit.sock(生产环境建议用更严格的权限,比如让Nginx所属用户组拥有读取权限)
重启服务生效
修改配置后,重启Gunicorn和Nginx:sudo systemctl restart gunicorn sudo systemctl restart nginx
二、修复Django Admin静态资源加载问题
Django Admin的静态文件需要先收集到指定目录,且Nginx的配置要正确指向这个目录:
执行collectstatic命令
首先确认项目settings.py中配置了STATIC_ROOT:STATIC_ROOT = '/FINlit/static/'然后激活虚拟环境执行收集命令:
cd /FINlit source venvforfinlit/bin/activate python manage.py collectstatic(执行时输入
yes确认收集所有静态文件)修正Nginx静态资源配置
你当前的location /static/用root会导致路径拼接错误:当请求/static/admin/css/xxx.css时,Nginx会去/FINlit/static/static/admin/css/xxx.css查找文件。改用alias更准确:location /static/ { alias /FINlit/static/; expires 30d; access_log off; }检查静态文件权限
确保静态文件目录的权限允许Nginx读取:sudo chown -R www-data:www-data /FINlit/static/
最后验证
再次重启Nginx和Gunicorn后:
- 访问
example.com应正常加载站点,不再返回502 - 访问
example.com/admin应能看到完整的Admin样式
内容的提问来源于stack exchange,提问作者Rahul

