Docker Compose网络中前端访问Django后端失败(已配置ALLOWED_HOSTS)
解决方案
以下是几个可以解决该问题的方向,按优先级尝试:
1. 确保修改的配置文件已生效
你修改本地settings.py后,必须重新构建后端镜像——因为你的backend服务是基于本地代码构建的,旧镜像里仍然是未修改的配置。执行以下命令更新镜像并重启服务:
docker-compose build backend docker-compose up -d
2. 补充带端口的主机名到ALLOWED_HOSTS
Django的ALLOWED_HOSTS会严格匹配请求的HTTP_HOST头。当你执行curl backend:8000时,请求头中的Host字段是backend:8000,而非单纯的backend,所以需要把这个完整值加入配置:
ALLOWED_HOSTS = ['backend', 'backend:8000']
如果是开发环境,也可以临时使用通配符快速验证(生产环境禁止使用):
ALLOWED_HOSTS = ['*']
3. 检查是否有环境变量覆盖配置
如果你的Django项目通过环境变量(比如DJANGO_ALLOWED_HOSTS)来配置ALLOWED_HOSTS,那么仅修改settings.py不会生效,需要同步修改对应的环境变量值。比如在docker-compose.yml的backend服务中添加:
environment: - DJANGO_ALLOWED_HOSTS=backend,backend:8000
内容的提问来源于stack exchange,提问作者RikkaTrueEye
相关产品推荐
相关产品推荐

