ArgoCD通过Nginx Ingress访问时出现过多重定向问题求助
解决ArgoCD通过Nginx Ingress访问时的循环重定向问题
问题根源
循环重定向(308)的核心原因是ArgoCD Server与Nginx Ingress之间的协议配置不匹配,且ArgoCD未正确识别外部请求的HTTPS协议,导致持续触发HTTPS重定向,与Ingress的配置形成闭环。
解决方案步骤
1. 修正ArgoCD Server的配置
编辑argocd-cmd-params-cm ConfigMap,确保以下参数正确设置:
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cmd-params-cm namespace: argo-cd data: server.insecure: "true" # 允许ArgoCD Server接收HTTP请求 server.redirect-to-https: "false" # 关闭ArgoCD自身的HTTPS重定向 server.insecure-root-path: "/" # 确保HTTP根路径可访问
修改后重启ArgoCD Server:
kubectl rollout restart deployment argocd-server -n argo-cd
2. 调整Nginx Ingress配置
使用以下Ingress配置,重点是添加X-Forwarded-Proto头传递,确保ArgoCD识别外部HTTPS请求:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: argocd-ingress namespace: argo-cd annotations: cert-manager.io/issuer: prod-issuer cert-manager.io/issuer-kind: OriginIssuer cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com nginx.ingress.kubernetes.io/force-ssl-redirect: "true" # 强制外部HTTP请求跳转到HTTPS nginx.ingress.kubernetes.io/backend-protocol: "HTTP" # Ingress到ArgoCD Server用HTTP通信 nginx.ingress.kubernetes.io/configuration-snippet: | proxy_set_header X-Forwarded-Proto $scheme; spec: tls: - hosts: - '*.my_site.dev' secretName: argocd-secret ingressClassName: nginx rules: - host: argocd.my_site.dev http: paths: - path: / pathType: Prefix backend: service: name: argocd-server port: name: http
应用配置:
kubectl apply -f argocd-ingress.yaml
3. 验证配置
- 查看ArgoCD Server日志,确认无异常重定向日志:
kubectl logs deployment/argocd-server -n argo-cd -f
- 访问
https://argocd.my_site.dev,检查是否正常加载ArgoCD界面。
关键说明
X-Forwarded-Proto头是核心:ArgoCD Server依赖这个头判断外部请求的协议,如果缺失,即使Ingress用HTTPS,ArgoCD仍会认为外部是HTTP,从而触发重定向。- 确保
server.redirect-to-https设置为false:避免ArgoCD自身强制重定向,把HTTPS跳转的逻辑交给Ingress处理。
内容的提问来源于stack exchange,提问作者Vitor
相关产品推荐
相关产品推荐

