Django部署后执行collectstatic仍无法加载.css/.js文件求助
问题排查与解决办法
核心原因:Nginx静态资源路径配置错误
你的STATIC_ROOT指向/home/workers/apo_web/static,但Nginx配置中location /static/使用的root参数导致路径拼接错误:
- 当浏览器请求
/static/new_style.css时,Nginx会尝试从/home/workers/apo_web/django_apo/static/new_style.css读取文件 - 但实际文件存在于
/home/workers/apo_web/static/new_style.css,路径不匹配引发404错误
解决步骤
1. 修正Nginx静态资源配置
将sites-enabled下配置文件中的location /static/块修改为以下两种方式之一:
方式一:使用alias(推荐)
location /static/ { alias /home/workers/apo_web/static/; }
alias会直接将/static/请求映射到指定目录,不会额外拼接路径,完全匹配你的STATIC_ROOT位置。
方式二:调整root路径
如果坚持使用root,需将路径设置为STATIC_ROOT的上级目录:
location /static/ { root /home/workers/apo_web/; }
此时Nginx会拼接出正确路径/home/workers/apo_web/static/xxx,与实际文件位置一致。
2. 验证配置并重启Nginx
- 检查Nginx配置语法是否合法:
sudo nginx -t
- 语法无误后重启Nginx:
sudo systemctl restart nginx
3. 额外检查项
- 确认静态资源目录权限:确保Nginx进程用户(通常为
www-data)拥有读取权限
sudo chmod -R 755 /home/workers/apo_web/static sudo chown -R www-data:www-data /home/workers/apo_web/static
- 清理浏览器缓存:新静态文件可能被浏览器缓存,按
Ctrl+F5强制刷新页面测试
内容的提问来源于stack exchange,提问作者Codejoy
相关产品推荐
相关产品推荐

