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

NGINX Ingress Controller SSL无法生效,请求排查TLS配置问题

TLS访问失败排查步骤

1. 检查TLS Secret的有效性

  • 确认api-gateway-tls Secret存在于default命名空间:
    kubectl get secrets -n default api-gateway-tls
    
  • 验证Secret包含tls.crt和tls.key两个必填字段:
    kubectl describe secret api-gateway-tls -n default
    
    需确保这两个字段的内容是完整的PEM格式证书和未加密私钥,无格式损坏。

2. 验证Ingress Controller的端口监听

  • 检查NGINX Ingress Controller的Service是否暴露443端口:
    kubectl get svc -n ingress-nginx  # 通常控制器位于ingress-nginx命名空间
    
    若为LoadBalancer类型,确认EXTERNAL-IP已分配;若为NodePort,验证节点对应端口是否开放防火墙规则。
  • 直接测试443端口连通性:
    curl -v https://api.some.eu:443
    # IP测试需指定域名解析
    curl -v https://<外部IP>:443 --resolve api.some.eu:<外部IP>
    
    观察是否能建立TLS连接,是否出现证书错误或超时。

3. 排查Ingress配置的冲突与不合理项

  • 移除冗余的Ingress类配置:Kubernetes 1.19+版本仅需保留spec.ingressClassName: nginx,删除metadata.annotations.kubernetes.io/ingress.class,避免配置冲突。
  • 修正后端协议注解:你的后端服务端口为80(通常对应HTTP),但配置了nginx.ingress.kubernetes.io/backend-protocol: "HTTPS",这会导致NGINX尝试用HTTPS连接后端80端口,引发连接失败。建议先移除该注解再测试。
  • 明确SSL重定向的生效范围:force-ssl-redirect和ssl-redirect仅对匹配host: api.some.eu的请求生效,直接用IP访问时不会触发重定向(且IP通常不在证书SAN列表中,会导致证书错误),这属于正常现象。

4. 查看Ingress Controller日志定位错误

  • 导出NGINX控制器Pod日志,搜索TLS相关关键词:
    kubectl logs -n ingress-nginx <nginx-ingress-pod名称>
    
    重点排查ssl、certificate、secret相关报错,比如证书加载失败、Secret不存在等信息。

5. 验证证书与域名的匹配性

  • 检查证书的SAN字段是否包含api.some.eu:
    # 导出证书到本地
    kubectl get secret api-gateway-tls -n default -o jsonpath='{.data.tls\.crt}' | base64 -d > cert.pem
    # 查看证书SAN信息
    openssl x509 -in cert.pem -text -noout | grep -A 1 "Subject Alternative Name"
    
    确保输出中包含DNS:api.some.eu,否则客户端会因证书不匹配拒绝连接。

内容的提问来源于stack exchange,提问作者Atif Shafi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:47:03