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

AKS中Ingress Nginx出现ERR_TOO_MANY_REDIRECTS问题求助

问题分析

访问afg-cas-preprod.mocomtest.com/auth时出现ERR_TOO_MANY_REDIRECTS错误,结合你的Ingress配置,核心冲突点如下:

  1. SSL透传与强制重定向冲突:启用nginx.ingress.kubernetes.io/ssl-passthrough: 'true'后,Ingress Nginx会直接透传TLS流量到后端,不会在Ingress层终止SSL。但同时配置的force-ssl-redirect和ssl-redirect注解会触发Ingress层面的HTTP转HTTPS重定向,与ssl-passthrough模式逻辑冲突,导致重定向混乱。
  2. 路径重写与后端路由循环:rewrite-target: /会将所有请求路径重写为根路径,当访问/auth时,请求会被转发到后端/,如果CAS Server本身会将根路径重定向到/auth,就形成/auth → / → /auth的循环。
  3. 后端HTTPS配置叠加:后端使用6443端口(典型HTTPS端口),若后端自身配置了HTTP转HTTPS重定向,叠加Ingress的ssl-passthrough模式,会导致重复触发重定向逻辑。
解决方案

按以下步骤调整Ingress配置:

1. 清理冲突的SSL注解

由于启用了ssl-passthrough,Ingress层无需处理SSL重定向,直接移除以下注解:

nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/ssl-redirect: 'true'

保留kubernetes.io/ingress.allow-http: 'false'确保仅接受HTTPS流量。

2. 修正路径重写规则

如果CAS Server需要接收/auth路径请求,移除nginx.ingress.kubernetes.io/rewrite-target: /注解,或调整为匹配实际路由的规则。例如,若后端根路径对应/auth,可修改为:

nginx.ingress.kubernetes.io/rewrite-target: /auth$1

同时更新Ingress的path配置:

paths:
  - path: /(.*)
    pathType: ImplementationSpecific
    backend:
      service:
        name: cas-server
        port:
          number: 6443

这样访问/auth会直接转发到后端的/auth路径,避免重写导致的循环。

3. 验证后端服务配置

检查CAS Server的内部路由,确保不会将/auth重定向回根路径。由于已启用ssl-passthrough,Ingress透传的是HTTPS流量,后端无需再触发HTTP转HTTPS重定向。

调整后的完整Ingress配置示例

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: cas-ingress
  namespace: cas
  annotations:
    kubernetes.io/ingress.allow-http: 'false'
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/affinity: cookie
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "X-Frame-Options: SAMEORIGIN";
      more_set_headers "X-Xss-Protection: 0";
      more_set_headers "Referrer-Policy: strict-origin-when-cross-origin";
    nginx.ingress.kubernetes.io/proxy-body-size: 10m
    nginx.ingress.kubernetes.io/session-cookie-hash: sha1
    nginx.ingress.kubernetes.io/ssl-passthrough: 'true'
    
spec:
  tls:
    - hosts:
        - afg-cas-preprod.mocomtest.com
      secretName: mozcomtest-tls
  rules:
    - host: afg-cas-preprod.mocomtest.com
      http:
        paths:
          - path: /(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: cas-server
                port:
                  number: 6443
验证调整

应用修改后的Ingress配置:

kubectl apply -f your-ingress-file.yaml -n cas

等待Ingress控制器更新配置后,重新访问目标URL检查问题是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:40:19