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

Nginx部署Django站点后静态文件加载失败的配置求助

解决Django+Nginx部署后静态资源无法加载的问题

问题原因

当前Nginx把所有请求(包括静态资源)都代理给了Django,但生产环境下Django默认不处理静态文件请求,导致静态资源请求返回的是Django的404页面(MIME类型为text/html),触发浏览器的MIME类型校验错误。

解决方案

1. 收集静态文件到指定目录

先确保Django已将所有静态文件收集到STATIC_ROOT配置的目录中,执行以下命令:

python manage.py collectstatic

执行完成后,项目根目录下的deploystatic文件夹会包含所有应用和项目的静态资源文件。

2. 修改Nginx站点配置

编辑你的Nginx站点配置文件/etc/nginx/sites-available/myproject,在443端口的server块中,添加处理/static/和/media/请求的location块(放在location /之前):

server {
    listen 443 ssl;
    server_name ecommerce.jamelaumn.com;
    ssl_certificate something/fullchain.pem;
    ssl_certificate_key somethingblablabla/privkey.pem;

    # 处理静态资源请求
    location /static/ {
        alias /absolute/path/to/your/project/deploystatic/;  # 替换为项目根目录下deploystatic的绝对路径
    }

    # 处理媒体文件请求
    location /media/ {
        alias /absolute/path/to/your/project/media/;  # 替换为项目根目录下media的绝对路径
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

注意:

  • 替换/absolute/path/to/your/project/为你的Django项目根目录的绝对路径(例如/home/user/myproject/)
  • alias后的路径必须以/结尾,与location中的路径格式保持一致
  • 确保Nginx进程(通常是www-data用户)拥有访问这两个目录的权限,可执行以下命令调整权限:
    sudo chown -R www-data:www-data /absolute/path/to/your/project/deploystatic/
    sudo chown -R www-data:www-data /absolute/path/to/your/project/media/
    

3. 重启Nginx服务

配置修改完成后,重启Nginx使配置生效:

sudo systemctl restart nginx

完成以上步骤后,刷新浏览器即可正常加载静态资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:37:36