You need to enable JavaScript to run this app. Haproxy 2.2.3 如何配置不终止SSL的HTTPS健康检查?
优惠活动
大模型
产品
解决方案
定价
更多

Haproxy 2.2.3 如何配置不终止SSL的HTTPS健康检查?

HAProxy 不终止SSL的HTTPS健康检查配置修正

问题根因

  • 健康检查为HAProxy主动发起的独立连接,无前端客户端请求上下文,ssl_fc_sni变量无法获取有效值,导致SNI传递异常
  • 原健康检查Host头为google.com,Google对该域名的根请求默认返回301跳转至www.google.com,而原规则仅识别200状态码,因此报错
  • 部分server配置逻辑错误:对80明文端口启用check-ssl、对443端口不启用SSL握手,均会导致校验失败
  • frontend指定的后端名与实际定义的后端名不匹配,影响流量转发

修正步骤

1. 健康检查规则调整

二选一即可:

  • 匹配正确目标Host,直接返回200:
option httpchk
http-check send hdr host www.google.com meth GET uri / ver HTTP/1.1
http-check expect status 200
  • 保留原Host,允许301跳转状态:
option httpchk
http-check send hdr host google.com meth GET uri / ver HTTP/1.1
http-check expect status 200,301

2. Server参数修正

所有需做HTTPS健康检查的server,统一调整为以下格式,删除冗余错误参数:

server <节点名> <节点IP:业务端口> check inter 15s check port 443 check-ssl check-sni www.google.com

参数说明:

  • check port 443:健康检查统一发往后端443端口,禁止对80端口启用SSL参数
  • check-ssl:健康检查先完成TLS握手,再发送HTTP检测请求
  • check-sni www.google.com:为健康检查指定固定SNI值,无需引用业务流量变量

3. 后端名称匹配

将frontend中default_backend backend1修改为与实际后端名(当前为Backends)一致,或把后端名改为backend1,避免流量转发失败。

排查说明

  • 若仍报301错误:检查Host头是否与测试站点完全一致,避免触发跳转
  • 若报SSL握手失败:确认check port为443,已启用check-ssl且SNI值正确
  • 若报连接超时:检查后端443端口网络连通性,防火墙是否放通HAProxy健康检查的源IP

全局已配置ssl-server-verify none,无需额外添加本地证书或CA文件,即可跳过后端证书校验,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 22:15:05