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

Fargate部署Django+Nginx时如何配置allauth的OAuth回调域名

问题原因

allauth生成OAuth回调地址时,读取的是Django侧感知到的请求域名和协议。当前架构中Nginx反向代理到本地8011端口的Django服务时,没有透传原始请求的域名、协议头,同时Django没有配置信任反向代理层,导致Django误将自身监听的127.0.0.1识别为对外访问域名,最终生成了无法访问的回调地址。

修复步骤

1. Django配置调整

所有修改都在项目的settings.py中完成:

  • 配置允许访问的主机列表,加入你的对外域名:
    ALLOWED_HOSTS = ["example.com"]
    
  • 配置Django信任反向代理传递的请求头:
    # 读取反代透传的真实Host
    USE_X_FORWARDED_HOST = True
    # 如果对外提供HTTPS服务,加这行识别真实协议,纯HTTP服务可以去掉
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
  • 修正站点配置:
    登录Django后台,找到Sites(站点)模块,将默认站点的域名从127.0.0.1或者默认的示例域名改成你真实的对外域名example.com,同时确认settings.py中的SITE_ID参数对应该条站点记录的ID。
  • 检查allauth基础配置:确认ACCOUNT_DEFAULT_HTTP_PROTOCOL参数和对外服务协议一致,HTTPS服务设为"https",HTTP服务设为"http"。

2. Nginx配置调整

修改Nginx的反向代理规则,透传原始请求的核心头信息给后端Django,不要把代理用的本地地址传给后端:

location / {
    proxy_pass http://127.0.0.1:8011;
    # 透传原始请求域名
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 透传原始请求协议(HTTP/HTTPS)
    proxy_set_header X-Forwarded-Proto $scheme;
}

如果你在Fargate服务前挂载了AWS ALB负载均衡,默认ALB会自动透传上述头信息,不需要额外修改ALB配置,只要保证Nginx不要覆盖这些头即可。

配置完成后重载Nginx、重启Django/uWSGI服务,再触发OAuth登录流程时,allauth就会自动生成example.com/callback/xxx格式的正确回调地址。

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:42:26