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

nginx-ingress代理启用SSL的TCP服务出现SSL握手失败如何解决

两种方案均可以实现,具体操作方法如下:

方案一:直接禁用TCP健康检查

你可以选择全局禁用所有TCP服务的健康检查,也可以仅针对ZooKeeper服务单独禁用:

  • 全局禁用:修改ingress-nginx命名空间下名为nginx-configuration的全局ConfigMap,添加参数enable-tcp-health-check: "false",重启Ingress Nginx Pod后生效
  • 单服务禁用:修改tcp-services ConfigMap中ZooKeeper对应的端口配置,在配置行末尾添加no_health_check参数即可,参考配置如下:
apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  # 2181为对外暴露的端口,后面替换为你实际的ZK服务地址
  "2181": "default/zookeeper:2181 no_health_check"
方案二:配置健康检查使用SSL证书

如果需要保留健康检查能力,你可以直接在tcp-services ConfigMap的对应配置中添加SSL相关参数,让Nginx健康检查时完成正常SSL握手:

  • 如果ZooKeeper仅开启服务端SSL单向认证,仅需要在配置行末尾添加ssl参数即可,Nginx会自动发起SSL握手
  • 如果ZooKeeper开启了双向认证,或者需要校验ZK服务端证书有效性,需要额外指定CA证书、客户端证书和密钥路径,对应证书文件需要提前通过Secret挂载到Ingress Nginx Pod的对应路径下,参考配置如下:
apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  "2181": "default/zookeeper:2181 ssl ssl_ca_cert /etc/nginx/ssl/zk-ca.crt ssl_certificate /etc/nginx/ssl/zk-client.crt ssl_certificate_key /etc/nginx/ssl/zk-client.key"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:36:02