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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:52:14