如何让Nginx正确识别并加载Django项目的静态文件?
解决Django部署Nginx后静态文件无法加载的问题
核心问题:Nginx静态资源路径配置错误
你的Nginx配置中location /static/的root参数设置有误。root指令会将请求的URL路径附加到指定目录后,比如当前配置:
location /static/ { root /home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/; }
当访问/static/img/home.png时,Nginx会尝试读取不存在的路径:/home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/static/img/home.png
而你的静态文件实际存放在/home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/下。
修复方案(二选一即可)
方案1:调整root指向静态目录的父级
修改Nginx配置中的root为静态文件夹的上级路径:
location /static/ { root /home/ubuntu/ubuntu/project/Pet/Django/bewise/src/; expires 30d; # 可选,添加缓存优化静态资源加载速度 }
此时Nginx会正确拼接出文件路径:/home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/img/home.png。
方案2:使用alias指令替代root
alias会直接将请求路径映射到指定目录,无需拼接URL路径:
location /static/ { alias /home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/; expires 30d; # 可选,添加缓存优化静态资源加载速度 }
额外检查项
- 确认
collectstatic执行成功,静态文件确实存在于目标目录,比如手动检查/home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/img/home.png是否存在。 - 确保Nginx进程拥有读取静态目录的权限,执行以下命令:
sudo chmod -R 755 /home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/ sudo chown -R www-data:www-data /home/ubuntu/ubuntu/project/Pet/Django/bewise/src/static/ - 修改Nginx配置后,重启Nginx生效:
sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者Doup
相关产品推荐
相关产品推荐

