You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Digital Ocean VPS上Django站点域名访问报502,静态资源加载异常求助

解决Django站点502 Bad Gateway及Admin静态资源加载问题

结合你给出的配置和遇到的问题,我们拆解成两个核心问题逐一修复:

一、修复502 Bad Gateway错误

你的配置里有两处关键问题,加上Socket权限可能存在的隐患,导致Nginx无法正常转发请求到Gunicorn:

  1. Server Name 不匹配
    你的Nginx配置中server_name my_ip;,但实际访问的是example.com,这会让Nginx无法匹配到对应的server块,直接返回502。修改为你的域名:

    server_name example.com www.example.com;
    
  2. 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所属用户组拥有读取权限)

  3. 重启服务生效
    修改配置后,重启Gunicorn和Nginx:

    sudo systemctl restart gunicorn
    sudo systemctl restart nginx
    

二、修复Django Admin静态资源加载问题

Django Admin的静态文件需要先收集到指定目录,且Nginx的配置要正确指向这个目录:

  1. 执行collectstatic命令
    首先确认项目settings.py中配置了STATIC_ROOT:

    STATIC_ROOT = '/FINlit/static/'
    

    然后激活虚拟环境执行收集命令:

    cd /FINlit
    source venvforfinlit/bin/activate
    python manage.py collectstatic
    

    (执行时输入yes确认收集所有静态文件)

  2. 修正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;
    }
    
  3. 检查静态文件权限
    确保静态文件目录的权限允许Nginx读取:

    sudo chown -R www-data:www-data /FINlit/static/
    

最后验证

再次重启Nginx和Gunicorn后:

  • 访问example.com应正常加载站点,不再返回502
  • 访问example.com/admin应能看到完整的Admin样式

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:53:18