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

生产环境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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:18:55