k8s Ingress配置HTTP重定向到HTTPS不生效如何解决?
修复方案
- 移除冗余注解,仅保留强制SSL重定向配置,新增转发头识别注解适配GKE环境,原配置中
nginx.ingress.kubernetes.io/ssl-redirect: "true"和nginx.ingress.kubernetes.io/force-ssl-redirect: "true"功能重叠,保留后者即可,同时新增nginx.ingress.kubernetes.io/use-forwarded-headers: "true"确保nginx可以正确识别原始请求的协议类型,避免跳转死循环或者不跳转问题。 - 补充www域名的host规则,你配置了
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"但Ingress规则中仅声明了mydomain.com,缺少www.mydomain.com的路由规则,会导致跳转逻辑异常。 - 验证托管证书状态,执行命令
kubectl get managedcertificates my-certificate确认证书状态为Active,证书未完成签发前SSL重定向规则不会生效。 - 配置更新后执行
kubectl describe ingress ingress查看事件日志,确认配置已被nginx ingress控制器正常加载无报错。
完整可用Ingress配置参考
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress annotations: kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.global-static-ip-name: my-address networking.gke.io/managed-certificates: my-certificate nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/use-forwarded-headers: "true" nginx.ingress.kubernetes.io/from-to-www-redirect: "true" spec: rules: - host: mydomain.com http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: my-service port: number: 2400 - host: www.mydomain.com http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: my-service port: number: 2400
内容的提问来源于stack exchange,提问作者nickponline
相关产品推荐
相关产品推荐

