生产环境下Django(DEBUG=False)结合Nginx部署时媒体文件无法加载的问题求助
生产环境下Django(DEBUG=False)结合Nginx部署时媒体文件无法加载的问题求助
大家好,我最近把Django项目部署到生产环境,已经设置了DEBUG=False,打算用Nginx来托管用户上传的媒体文件(比如图片),但遇到了棘手的问题,想请各位帮忙排查下。
具体问题是:当我在浏览器里直接访问媒体文件的URL(比如 http://<我的服务器IP>/media/sample.jpg)时,会返回404 Not Found错误。我确认过媒体文件确实存在于对应的文件夹中,Nginx服务处于运行状态,文件和文件夹的权限也配置正确,但就是没法正常加载图片。我不确定是Nginx的配置出了问题,还是Django这边有什么遗漏的设置。
以下是我的相关配置:
Nginx 配置
server { listen 80; listen [::]:80; server_name <my_server_ip>; location /media/ { alias /home/ubuntu_server02/cdo_portal/media/; autoindex on; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Django settings.py 相关配置
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
我已经尝试过的操作和预期结果:
- 直接在浏览器访问媒体文件的完整URL,比如
http://<我的服务器IP>/media/sample.jpg - 预期图片能正常显示,但实际返回404错误
- 反复核对了Nginx配置里的路径,确认
alias指向的文件夹和实际存放媒体文件的路径完全一致,文件也确实存在
有没有朋友遇到过类似的情况?或者能给我一些排查方向的建议吗?
内容来源于stack exchange
相关产品推荐
相关产品推荐

