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

Nginx无法识别Django静态文件问题求助

Django静态文件无法加载的排查与修复

当前配置情况

Nginx配置

server {
    listen 80;
    server_name  xxxxxxxxxxxxx;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static {
        alias  /home/ubuntu/Filmes/static;
   }

    location /media {
        root /home/ubuntu/Filmes;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }

}

Django settings.py配置

import os

STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR / "static")

collectstatic后的目录结构

- static
|------ admin
|------ css
|------ images
|------ js
|------ staticfiles.json

排查与修复步骤

  • 检查静态文件目录权限
    确保Nginx进程有权限访问静态文件目录,执行以下命令:

    sudo chmod -R 755 /home/ubuntu/Filmes/static
    sudo chown -R www-data:www-data /home/ubuntu/Filmes/static
    

    Nginx默认以www-data用户运行,必须保证该用户能读取静态文件。

  • 修正Nginx的static location配置
    可将alias替换为root,避免路径匹配潜在问题,修改后的配置如下:

    location /static/ {
        root /home/ubuntu/Filmes;
    }
    

    注意/static/末尾的斜杠,配合root使用时,会把请求路径中/static/后的部分追加到root指定路径后,最终指向正确的静态文件目录。

  • 验证STATIC_ROOT路径正确性
    确认STATIC_ROOT的实际路径是否正确,进入Django shell检查:

    python manage.py shell
    

    执行以下代码查看路径:

    from django.conf import settings
    print(settings.STATIC_ROOT)
    

    输出需为/home/ubuntu/Filmes/static,若路径不符,需调整STATIC_ROOT配置。

  • 重启Nginx服务
    修改配置后必须重启Nginx生效:

    sudo systemctl restart nginx
    
  • 查看Nginx错误日志定位问题
    若仍无法加载,查看错误日志获取具体原因:

    sudo tail -f /var/log/nginx/error.log
    

    日志会明确提示权限不足、路径不存在等具体错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:05:26