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/staticNginx默认以
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
相关产品推荐
相关产品推荐

