Nginx已正常运行但Django静态文件无法加载求助
静态文件加载失败的排查与修复
结合你的Django配置、Nginx运行状态和当前配置,以下是具体的排查方向:
1. 验证静态文件路径匹配性
你的Django配置中STATIC_ROOT = 'static',意味着collectstatic会将静态文件收集到项目根目录(BASE_DIR)下的static文件夹。当前Nginx配置的root /home/ubuntu/portfolio-server,对应访问/static/css/style.css时,Nginx会尝试读取/home/ubuntu/portfolio-server/static/css/style.css。
- 手动确认文件存在:执行
ls /home/ubuntu/portfolio-server/static/,检查是否包含css、js等子文件夹及对应文件。 - 若项目根目录并非
/home/ubuntu/portfolio-server,直接修改Nginx的root路径为实际项目根目录。
2. 检查Nginx文件访问权限
Nginx默认以www-data用户运行,若该用户无静态文件读取权限,会返回403或404错误:
- 查看权限状态:
ls -l /home/ubuntu/portfolio-server/static/,确保文件夹权限为755、文件权限为644。 - 修复权限:
sudo chown -R www-data:www-data /home/ubuntu/portfolio-server/static/ sudo chmod -R 755 /home/ubuntu/portfolio-server/static/
3. 确保Nginx配置生效
即便Nginx显示运行中,修改配置后必须重启才能生效:
- 测试配置语法:
sudo nginx -t,若报错则根据提示修正配置。 - 重启服务:
sudo systemctl restart nginx
4. 修正STATIC_ROOT的相对路径问题
使用相对路径STATIC_ROOT = 'static'可能导致collectstatic的文件位置不符合预期,改为绝对路径更稳妥:
在settings.py中修改:
STATIC_ROOT = BASE_DIR / 'static'
重新执行python manage.py collectstatic,确认文件被正确收集到目标文件夹。
5. 排除浏览器缓存干扰
浏览器缓存的旧失效路径可能导致加载异常:
- 按F12打开开发者工具,切换到Network标签,刷新页面查看静态文件请求状态:
- 404:路径错误,回到第一步排查;
- 403:权限问题,参考第二步修复;
- 按Ctrl+F5强制刷新页面,跳过缓存重新加载。
内容的提问来源于stack exchange,提问作者Ch1irxo 17
相关产品推荐
相关产品推荐

