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

Kubernetes中NGINX Ingress向后端服务发起TLS加密请求配置问题

你的问题核心是NGINX Ingress默认会校验后端HTTPS服务的证书合法性,而mocksvc使用的自签证书不在Ingress的默认信任列表里,导致加密连接失败。结合你的需求(明文请求进入Ingress,Ingress通过HTTPS连接后端),先纠正配置中的冗余项,再提供两种解决方案:

首先,移除配置中的ssl-passthrough: "true"——这个注解用于将TLS流量直接透传给后端,和你「Ingress接收明文HTTP请求」的需求完全不符,保留会干扰正常请求处理。


方案1:关闭后端证书验证(测试环境快速解决)

添加注解让Ingress跳过后端证书合法性校验,修改后的Ingress配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    # 关闭后端证书验证,跳过合法性校验
    nginx.ingress.kubernetes.io/backend-ssl-verify: "false"
  name: mock-ingress
spec:
  rules:
    - host: mocksvc
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: mocksvc
                port:
                  number: 4000

方案2:导入自签CA证书让Ingress信任(生产/高安全场景)

如果需要保证连接安全性,可将mocksvc的自签CA证书导入Ingress的信任体系:

  1. 准备mocksvc的证书文件(如果是自签证书,直接使用mocksvc.crt即可)
  2. 创建存储CA证书的Secret:
    kubectl create secret generic mock-ca-secret --from-file=ca.crt=/path/to/your/mocksvc.crt
    
  3. 修改Ingress配置,指定信任的CA证书:
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
        # 开启后端证书验证
        nginx.ingress.kubernetes.io/backend-ssl-verify: "true"
        # 指定存储CA证书的Secret名称
        nginx.ingress.kubernetes.io/backend-ssl-ca-certificate: "mock-ca-secret"
      name: mock-ingress
    spec:
      rules:
        - host: mocksvc
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: mocksvc
                    port:
                      number: 4000
    

关键注解说明

  • backend-protocol: "HTTPS":明确告知Ingress使用HTTPS协议连接后端mocksvc
  • 方案1通过关闭证书校验快速解决问题,但存在中间人攻击风险,仅适合测试环境
  • 方案2让Ingress信任自签证书,既保留了加密连接的安全性,又符合mocksvc的TLS接入要求

内容的提问来源于stack exchange,提问作者revenge spirit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:01:25