使用Coolify部署Django应用遇Bad Request 400错误求助
解决Coolify部署Django应用返回400 Bad Request的问题
以下是针对该问题的常见排查和修复方案:
1. 检查ALLOWED_HOSTS配置
Django默认仅允许localhost访问,部署到Coolify后必须将分配的域名或服务器IP添加到ALLOWED_HOSTS中,否则会直接返回400错误。
修改settings.py:
# 替换为你的Coolify域名、服务器IP,允许多个值 ALLOWED_HOSTS = ["your-coolify-app-domain.com", "123.45.67.89"] # 若测试环境可临时使用通配符(生产环境不推荐) # ALLOWED_HOSTS = ["*"]
2. 配置CSRF_TRUSTED_ORIGINS(针对POST/PUT等请求)
如果POST请求也返回400,大概率是CSRF信任源未配置。需要将Coolify的应用域名(带协议)添加到CSRF_TRUSTED_ORIGINS:
修改settings.py:
# 注意必须包含完整协议(http/https) CSRF_TRUSTED_ORIGINS = ["https://your-coolify-app-domain.com"]
3. 开启反向代理头支持
Coolify通常会通过反向代理(如Nginx)转发请求,Django需要识别代理传递的X-Forwarded-*头,否则会判定请求来源非法。
在settings.py中添加以下配置:
USE_X_FORWARDED_HOST = True SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
4. 验证Coolify的端口映射配置
确认Coolify中你的应用服务的端口映射是否正确:将外部请求端口(通常是80/443)映射到容器内的8000端口(Gunicorn监听的端口)。若映射错误,请求无法正确到达Django服务也可能导致异常。
内容的提问来源于stack exchange,提问作者omkobass
相关产品推荐
相关产品推荐

