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

Nginx+Django+Gunicorn部署:静态/媒体文件加载异常求助

解决Django站点静态/媒体文件加载失败(仅index.css可加载)问题

针对你遇到的问题,从常见原因出发,按以下步骤排查:

1. 修复目录权限问题

Nginx默认以www-data用户运行,而/root目录的权限通常限制严格,普通用户无法访问,这是最常见的故障诱因:

  • 优先建议将静态/媒体文件目录迁移到非root路径,比如/var/www/djangoproj/static和/var/www/djangoproj/media
  • 若需保留原路径,调整目录权限让www-data拥有访问权限:
    chown -R www-data:www-data /root/djangoproj/static /root/djangoproj/media
    chmod -R 755 /root/djangoproj/static /root/djangoproj/media
    

2. 确认Django静态文件已正确收集

生产环境下必须执行collectstatic命令,将所有应用的静态文件汇总到指定目录:

python manage.py collectstatic

执行时需确认目标目录与Nginx配置中alias指向的/root/djangoproj/static完全一致(需匹配Django settings.py里的STATIC_ROOT配置)。

3. 验证Nginx配置正确性

  • 检查配置语法是否合法:
    nginx -t
    
    若有错误,根据提示修正后重启Nginx:
    systemctl restart nginx
    
  • 核对alias路径匹配逻辑:如果前端请求/static/js/main.js,Nginx会去/root/djangoproj/static/js/main.js查找文件,需确保该文件实际存在。

4. 检查文件实际存在性与请求路径

  • 登录服务器,直接查看/root/djangoproj/static目录下的文件,确认除index.css外的其他文件是否存在,路径是否与前端请求的URL一致。
  • 打开浏览器开发者工具(F12),查看Network面板中加载失败文件的状态码(通常为404),核对请求URL对应的服务器文件路径是否正确。

5. 检查媒体文件配置

确保Django settings.py中已正确配置媒体文件参数:

MEDIA_ROOT = '/root/djangoproj/media'
MEDIA_URL = '/media/'

同时确认媒体文件已上传到MEDIA_ROOT指定的目录中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:17:43