生产环境Wagtail/Django后台图片无法显示问题排查求助
Wagtail/Django生产环境图片不显示问题排查与解决
1. 核心配置检查
先确认settings.py中的关键配置是否正确:
# 媒体文件路径配置 MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' # 生产环境强制关闭DEBUG DEBUG = False # 添加服务器IP或域名到允许列表 ALLOWED_HOSTS = ['你的服务器IP', '你的域名']
2. 权限问题修复
容器内媒体目录权限
Dockerfile中虽执行了chown,但挂载匿名卷后权限可能被重置。手动修复容器内权限:
winpty docker-compose -f docker-compose.prod.yml exec web chown -R app:app /home/app/web/media
或者修改Dockerfile.prod,在创建media目录时直接指定权限:
RUN mkdir $APP_HOME/media && chmod 755 $APP_HOME/media && chown app:app $APP_HOME/media
Nginx容器读取权限
Nginx默认以nginx用户运行,可能无法读取挂载的媒体卷。修改Nginx的Dockerfile,添加权限设置:
RUN chown -R nginx:nginx /home/app/web/media
同时在nginx.conf的/media/块中补充缓存与权限兼容配置:
location /media/ { alias /home/app/web/media/; autoindex off; add_header Cache-Control "public, max-age=31536000"; }
3. 验证文件上传状态
检查容器内是否存在上传的图片:
winpty docker-compose -f docker-compose.prod.yml exec web ls -la /home/app/web/media
如果文件不存在,需检查:
- Wagtail上传配置是否正常
- Django的
DATA_UPLOAD_MAX_MEMORY_SIZE是否与Nginx的client_max_body_size 50M匹配
4. 日志排查
查看Nginx日志定位具体错误(403为权限问题,404为路径问题):
docker-compose -f docker-compose.prod.yml logs nginx
5. 确认请求路由
确保Nginx直接处理/media/请求,你的nginx.conf中该配置已正确设置,无需修改,但要避免其他路由规则冲突。
内容的提问来源于stack exchange,提问作者irjar
相关产品推荐
相关产品推荐

