Nginx 不能访问 (找不到)Django 静态文件的原因

2023-02-18 10:17:03 浏览数 (1)

前提

django 部署模式为 debug = False(debug = True 找不到静态文件基本是配置错误,去详细检查 settings.py 里的 STATIC_URL、STATICFILES_DIRS 配置)

现象

访问静态文件 网页状态码为:404

首先要用 F12,查看 静态文件的路由,然后用 这个路由 去 静态文件目录 找这个文件是否存在。

可能原因

  • Nginx 配置文件没有启用 root 用户(使用:user root;)
  • Nginx 配置静态文件路径没使用绝路径(如:/root/home/djangoprojects/djangoblog/static_root)
  • Nginx 配置静态文件路径没使用 django 项目的 settings.py 里的 STATIC_ROOT 指向的目录
  • Nginx 的配置规则屏蔽了 js、css 等结尾的静态文件
  • django 项目的 settings.py 里的 STATIC_ROOT 不是独立的目录,确保是独立的目录而不是 py 语句(如:STATIC_ROOT = 'static_root/' ,然后重新收集静态文件:python manage.py collectstatic)
  • django 项目的 settings.py 里的 STATIC_ROOT 指向的目录和文件权限不是当前用户的(授权:chmod -R 755 /root/home/djangoprojects/djangoblog)
  • 静态文件对应的路径下,文件不存在(路由没错,文件不存在,可能是没有收集到 static_root 目录下,重新收集静态文件:python manage.py collectstatic)
  • 静态文件对应的路由拼错了(路由错了,文件存在)

静态文件配置

静态文件管理官网文档

  • https://docs.djangoproject.com/zh-hans/3.0/howto/static-files/(Django 3.x)
  • https://docs.djangoproject.com/zh-hans/2.2/howto/static-files/(Django 2.x)

Nginx 下部署 django

centos7 virtualenv django uwsgi nginx 部署站点

0 人点赞