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

Oauth2-proxy对接Traefik时出现ERR_TOO_MANY_REDIRECTS重定向循环问题

问题根因

你遇到的重定向循环是多个配置不匹配共同导致的,核心问题如下:

  1. Cookie安全属性与HTTPS环境不兼容:你当前全站走HTTPS访问,但oauth2-proxy配置了cookie-secure: false,导致浏览器在HTTPS站点下不会正常传递认证cookie,oauth2-proxy每次请求都判定用户未登录,持续触发认证跳转。
  2. ForwardAuth地址配置错误:你使用公网域名作为forwardAuth的调用地址,Traefik每次校验身份时都会绕公网重新请求站点,再次触发根路由的认证规则,形成循环。
  3. 冗余的SSL跳转配置:auth-headers中间件中开启了sslRedirect: true,但你已经在Traefik全局配置了SSL强制跳转,且oauth2-proxy的路由入口本身就是websecure(443)端口,冗余的跳转规则会导致内部HTTP调用被强制跳转到HTTPS,加重循环。

修复步骤

1. 修改oauth2-proxy配置

将cookie安全属性适配HTTPS环境,调整如下:

extraArgs:
  # 将false改为true,适配HTTPS站点
  cookie-secure: true
  # 其余配置保持不变

2. 调整Traefik中间件配置

修改oauth-auth中间件

将forwardAuth地址改为集群内部Service地址,避免绕公网触发认证,同时增加认证响应头配置,确保上游服务能拿到身份信息:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: oauth-auth
spec:
  forwardAuth:
    # 替换为你oauth2-proxy所在命名空间的集群内网地址
    address: http://oauth2-proxy.<你的命名空间>.svc.cluster.local/oauth2/auth
    trustForwardHeader: true
    authResponseHeaders:
      - Authorization
      - X-Forwarded-User

修改auth-headers中间件

去掉冗余的SSL跳转配置:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: auth-headers
spec:
  headers:
    # 删掉sslRedirect: true这一行
    stsSeconds: 315360000
    browserXssFilter: true
    contentTypeNosniff: true
    forceSTSHeader: true
    stsIncludeSubdomains: true
    stsPreload: true
    frameDeny: true

(可选)优化oauth-errors中间件

增加登录后重定向回原访问地址的逻辑,提升使用体验:

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: oauth-errors
spec:
  errors:
    status:
      - "401-403"
    service:
      name: oauth2-proxy
      port: 80
    query: "/oauth2/sign_in?rd={url}"

3. 显式设置oauth2-proxy路由优先级

给oauth2-proxy的IngressRoute设置更高优先级,确保/oauth2/开头的请求不会匹配到根路由的认证规则:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: oauth2-proxy
spec:
  entryPoints:
    - websecure
  routes:
    - match: "Host(`mycompany.com`) && PathPrefix(`/oauth2/`)"
      kind: Rule
      # 显式设置高于根路由的优先级
      priority: 100
      services:
        - kind: Service
          name: oauth2-proxy
          port: 80
      middlewares:
        - name: auth-headers

4. (可选)配置Traefik信任NLB转发头

因为你用AWS NLB做SSL卸载,需要配置Traefik信任NLB传来的转发头,避免X-Forwarded-Proto识别错误:
在traefik-values.yaml中增加如下配置后重新升级Traefik:

additionalArguments:
  # 生产环境建议替换为你AWS VPC的NLB CIDR段,避免伪造头风险
  - "--entrypoints.websecure.forwardedHeaders.trustedIPs=0.0.0.0/0"

修改完成后重新应用所有配置即可解决重定向循环问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:36:02