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

Azure AKS中Nginx Ingress后端服务无法通过HTTPS访问求助

排查HTTPS访问失败的问题

针对你的AKS集群Ingress配置及服务环境,从以下几个方向排查定位问题:

1. SSL Passthrough 配置逻辑冲突

你启用了nginx.ingress.kubernetes.io/ssl-passthrough: "true"注解,该配置会将客户端的HTTPS流量直接透传给后端服务,Ingress层面不会做SSL终止操作。但你的Ingress规则里后端指向的是服务的80端口(HTTP),透传的HTTPS流量到后端HTTP端口后,服务无法解析HTTPS请求,必然导致访问失败。

调整方案:

  • 若保留SSL Passthrough:将后端服务端口改为OrderService监听HTTPS的端口(比如443),确保后端服务确实在该端口提供HTTPS服务。
  • 若无需SSL Passthrough:删除ssl-passthrough注解,让Ingress在自身层面终止SSL,再转发HTTP流量到后端80端口,此时需确保TLS证书配置正确。

2. TLS证书配置缺失

你的Ingress spec中定义了tls块,但未指定secretName,Kubernetes需要明确使用哪个Secret存储HTTPS证书。若没有对应Secret,Ingress无法完成SSL终止(即便不用passthrough模式,也需证书支撑)。

检查与修复步骤:

  • 执行kubectl get secrets查看是否存在对应域名的证书Secret。
  • 若不存在,创建包含证书和私钥的Secret:
kubectl create secret tls orderservice-tls --cert=path/to/your-cert.pem --key=path/to/your-private-key.pem
  • 在Ingress的tls块中补充secretName配置:
tls:
  - hosts:
    - orderservice.easetrip.net
    secretName: orderservice-tls

3. Nginx Ingress Controller 未启用SSL Passthrough

若坚持使用SSL Passthrough模式,需确认AKS上的Nginx Ingress Controller是否开启了该功能——默认情况下该功能是关闭的,需在部署时通过启动参数启用:

  • 检查Ingress Controller的Deployment,确认是否包含--enable-ssl-passthrough启动参数。
  • 若未添加,更新Controller部署,追加该启动参数。

4. 网络端口与防火墙验证

  • 确认AKS的Nginx Ingress Controller服务(通常为LoadBalancer类型)的443端口已对外开放,Azure网络安全组(NSG)允许443端口的入站流量。
  • 执行curl -v https://orderservice.easetrip.net测试,根据返回的具体错误信息(如证书错误、连接超时、502错误等)缩小排查范围。

5. 后端服务HTTPS配置验证

若使用SSL Passthrough模式,需确认OrderService的HTTPS配置正确性:

  • 服务的容器端口是否暴露了HTTPS端口(如443)。
  • Kubernetes Service是否正确指向该HTTPS端口。
  • 可在集群内部直接测试后端服务的HTTPS端口连通性:
kubectl run -it --rm test-pod --image=curlimages/curl -- curl -v https://orderservice:443

内容的提问来源于stack exchange,提问作者Arshad Badar Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:47:47