Nginx配置Django时文件无法找到:部署故障求助
排查Nginx"未找到文件"报错的步骤
从配置细节和基础环境入手,逐一排查问题:
1. 修正静态/媒体文件路径配置
你的location /media/配置存在明显逻辑错误:
- 媒体文件目录的
alias指向了static目录,不符合常规项目结构,应改为实际的媒体文件目录路径(比如/home/bsyal/mysite/mypro-project/media/) - 使用
alias时,路径结尾必须加/,否则请求路径会拼接错误。修正后的静态/媒体配置示例:
location /static/ { autoindex on; alias /home/bsyal/mysite/mypro/static/; } location /media/ { autoindex on; alias /home/bsyal/mysite/mypro-project/media/; }
2. 检查文件与目录权限
Nginx运行用户为www-data,必须确保静态/媒体目录及文件具备可读权限,同时父目录要有执行权限(允许进入目录):
# 递归设置目录可读可执行权限 sudo chmod -R 755 /home/bsyal/mysite/mypro/static/ sudo chmod -R 755 /home/bsyal/mysite/mypro-project/media/ # 将目录所属组设置为www-data(确保Nginx有权限访问) sudo chown -R :www-data /home/bsyal/mysite/
3. 验证Gunicorn服务状态
如果是动态页面报错,检查Gunicorn是否正常运行、socket文件是否存在:
# 检查socket文件是否存在 ls -l /run/gunicorn.sock # 查看Gunicorn服务状态(systemd管理场景) sudo systemctl status gunicorn
若socket不存在或Gunicorn未运行,重启Gunicorn服务。
4. 查看Nginx错误日志定位具体问题
直接查看Nginx错误日志,里面会记录具体找不到的文件路径,快速定位是静态文件还是动态请求的问题:
tail -f /var/log/nginx/error.log
比如日志若显示open() "/home/bsyal/mysite/mypro/staticcss/style.css" failed,则说明是alias路径未加结尾斜杠导致的拼接错误。
5. 测试配置并重启Nginx
修改配置后,先验证配置合法性,再重启Nginx生效:
sudo nginx -t sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者B Syal
相关产品推荐
相关产品推荐

