Nginx无法加载Django静态/媒体文件,关闭Debug后配置异常如何解决?
问题排查与修正方案
核心问题点
- 权限问题:静态/媒体文件存放在
/root目录下,Nginx默认运行用户(通常为www-data)无权限读取/root目录内的文件,直接导致403/404错误 - Django配置缺失:
settings.py未配置STATIC_ROOT,关闭Debug模式前未执行静态文件收集命令 - 多余配置:urls.py中添加的媒体文件服务配置仅在Debug=True时生效,关闭Debug后无效,不需要保留
- Nginx alias配置可优化:当前alias配置未加结尾斜杠,可能出现路径拼接错误,同时缺少静态资源缓存规则会影响加载性能
具体修正步骤
第一步:调整Django配置
修改settings.py,补充STATIC_ROOT配置:
STATIC_URL = '/static/' # 新增STATIC_ROOT,指定collectstatic命令收集静态文件的输出目录 STATIC_ROOT = os.path.join(BASE_DIR, "static") MEDIA_ROOT = os.path.join(BASE_DIR, "media") MEDIA_URL = "/media/"
执行静态文件收集命令,将所有应用的静态文件汇总到STATIC_ROOT目录:
python manage.py collectstatic
移除urls.py末尾的+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)配置,关闭Debug后该配置不会生效,无需保留。
第二步:调整文件存放路径解决权限问题
不要将项目静态/媒体文件放在/root目录下,建议迁移到/var/www/或者普通用户家目录下,比如迁移到/var/www/labelEngine/目录,然后给Nginx运行用户授权:
sudo chown -R www-data:www-data /var/www/labelEngine/ sudo chmod -R 755 /var/www/labelEngine/
第三步:修正Nginx配置
修改静态/媒体路径的location配置,替换为新的目录路径,补充结尾斜杠和缓存规则:
upstream backend { server localhost:8000; } server { server_name wavera.ru www.wavera.ru; location / { include proxy_params; proxy_pass http://backend; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/www.wavera.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.wavera.ru/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot location /static/ { # 替换为新的STATIC_ROOT路径,结尾加斜杠 alias /var/www/labelEngine/static/; # 新增静态资源缓存规则 expires 30d; add_header Cache-Control "public, immutable"; } location /media/ { # 替换为新的MEDIA_ROOT路径,结尾加斜杠 alias /var/www/labelEngine/media/; expires 30d; add_header Cache-Control "public, immutable"; } } server { if ($host = wavera.ru) { return 301 https://$host$request_uri; } if ($host = www.wavera.ru) { return 301 https://$host$request_uri; } listen 80 ; server_name wavera.ru www.wavera.ru; return 404; }
修改完成后测试Nginx配置合法性并重载生效:
sudo nginx -t sudo systemctl reload nginx
内容的提问来源于stack exchange,提问作者movax100movbx20mul
相关产品推荐
相关产品推荐

