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

Django+Nginx部署时加载静态文件出现404错误求助

解决Nginx下静态文件与图片404错误的方案

看起来你的Nginx静态资源配置明显没写完,这大概率就是导致CSS和图片加载404的核心问题!咱们一步步排查修复:

1. 补全静态文件的Location配置

你给出的配置里location /static/...是不完整的,必须明确指向Django项目收集静态文件的实际目录。这里分两种写法,注意区别:

  • 使用alias:适合直接指定静态文件根目录,末尾的斜杠要加上避免路径拼接错误:
location /static/ {
    alias /home/django/django_project/static/;
}
  • 使用root:root的路径是静态目录的上级目录,Nginx会自动把/static/拼在路径后面:
location /static/ {
    root /home/django/django_project;
}

注意:二选一即可,别混用,否则会导致路径错误!

2. 确保Django已收集静态文件

Django不会自动把各App的静态文件整合到一起,必须手动执行收集命令,把静态文件统一放到你配置的STATIC_ROOT目录下:

python manage.py collectstatic

执行时会提示确认,输入yes即可。完成后检查目标目录是否有所有静态文件(比如CSS、图片等)。

3. 修复目录权限问题

Nginx的运行用户(通常是www-data)需要有读取静态和media目录的权限,否则会因为权限不足返回403或404。执行以下命令修复:

# 给静态目录设置权限
sudo chown -R www-data:www-data /home/django/django_project/static
sudo chmod -R 755 /home/django/django_project/static

# 给媒体文件目录同样设置权限
sudo chown -R www-data:www-data /home/django/django_project/django_project/media
sudo chmod -R 755 /home/django/django_project/django_project/media

4. 验证Nginx配置并重启服务

修改配置后,先测试配置是否合法,避免语法错误导致Nginx无法启动:

sudo nginx -t

如果输出test is successful,就可以重启Nginx生效:

sudo systemctl restart nginx

额外检查:静态资源引用路径

如果还是有部分图片404,检查你的HTML或CSS里的资源路径是否正确。比如应该用绝对路径/static/images/avatar.jpg,而不是相对路径../images/avatar.jpg,否则页面跳转后路径会失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:17:03