You need to enable JavaScript to run this app. Ingress配置中如何同时支持HTTP与HTTPS双协议访问?
优惠活动
大模型
产品
解决方案
定价
更多

Ingress配置中如何同时支持HTTP与HTTPS双协议访问?

Azure应用网关Ingress同时承接HTTP/HTTPS流量的配置方案

核心结论

这不是Kubernetes的平台限制。从设计逻辑上,同一套Ingress规则完全可以同时承接80端口的明文HTTP流量、443端口的加密HTTPS流量,统一转发到后端的HTTP服务。
你遇到的「添加TLS配置后Ingress就停止响应HTTP请求」的问题,和平台能力边界无关,本质是现有配置的疏漏,叠加Azure Application Gateway Ingress Controller的默认行为导致的。

现有配置的关键疏漏

  • 域名映射完全不匹配:TLS段中声明的受保护域名是*.mydomain.com,但路由规则实际匹配的域名是*.mydomain.net,两个配置条目没有关联,Ingress控制器无法建立TLS终端和路由规则的映射关系。
  • 触发了默认的HTTPS强制跳转逻辑:Azure应用网关Ingress控制器的默认规则为,当Ingress中存在TLS配置时,会自动把同域名下80端口的HTTP请求重定向到443端口的HTTPS服务。由于你之前TLS和路由规则的域名不匹配,重定向逻辑无法生成正确的转发规则,最终表现为HTTP请求无响应。

可直接复用的修正配置

调整需要完成两个操作:一是将TLS段的host与路由规则的host做完全对齐,二是通过控制器注解关闭默认的强制HTTPS跳转,保留明文HTTP流量的正常转发通道。修正后的完整配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    # 关闭默认的HTTPS强制重定向,保留明文HTTP流量转发能力
    appgw.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  tls:
    - hosts:
        # 与路由规则的host保持完全一致,修正域名不匹配问题
        - "*.mydomain.net"
      secretName: aks-ingress-tls
  rules:
    - host: "*.mydomain.net"
      http:
        paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: frontend-service
                port:
                  number: 80

配置生效后的路由行为

完成调整后,两类入站流量会完全复用同一条路由规则,不需要重复编写配置:

  • 80端口收到的明文HTTP请求,直接按host、路径规则匹配后端服务,不做强制跳转
  • 443端口收到的HTTPS请求,先通过绑定的TLS证书完成SSL卸载,解密后匹配相同的host、路径规则,转发到同一个后端服务

如果后续需要开启“HTTP自动跳转HTTPS”的能力,只需要把上述注解中的ssl-redirect值修改为"true"即可,路由规则不需要做任何调整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 02:36:02