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

Nginx与Django部署中媒体文件无法访问的问题求助

问题分析与解决方案

从你的错误日志里一眼就能看到关键问题:Nginx尝试访问的路径是/home/user/project/test/media/media/sized/products/picture.JPG——路径里重复了一层media,这就是文件找不到的核心原因。

为什么会出现路径重复?

你的Nginx配置里,location /media的root设置成了/home/user/project/test/media/,而当用户请求/media/sized/...时,Nginx会自动把root路径和请求路径拼接起来:

root路径 + 请求路径 = /home/user/project/test/media/ + /media/sized/...

结果就多出了一层media,和你的实际文件路径不匹配。

直接修正方案

把location /media的root改成/home/user/project/test/,也就是media目录的父目录。修正后的配置块如下:

location /media {
    root /home/user/project/test/;
    expires 1d;
    autoindex on;
}

这样拼接后,请求/media/sized/products/picture.JPG就会对应到正确的路径:/home/user/project/test/media/sized/products/picture.JPG,正好和你settings.py里的MEDIA_ROOT一致。

额外需要检查的细节

  1. 文件真实存在性:确认/home/user/project/test/media/sized/products/picture.JPG这个文件确实存在,Linux系统区分大小写,注意文件名的大小写是否和请求一致(比如JPG和jpg是两个不同的文件)。
  2. 权限问题:虽然你换过Nginx用户,但要确保Nginx运行的用户(通常是www-data)对/home/user/project/test/media目录及其所有父目录有读取权限,对文件本身也有读取权限。可以用ls -l /home/user/project/test/media/sized/products/查看权限,临时测试可以用chmod -R 755 /home/user/project/test/media,测试后记得改回更安全的权限(比如750)。
  3. 重启Nginx生效:修改配置后一定要执行sudo systemctl restart nginx让配置生效。

内容的提问来源于stack exchange,提问作者Emile

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:42:14