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

HAProxy多子域名SSL透传转发跳转异常 疑似Cookie相关问题

问题根因
  • 你遇到的跳转异常和Cookie、粘性会话无关:当前配置未开启任何粘性会话规则,且SSL passthrough模式下HAProxy不会解析应用层的Cookie内容。
  • 核心问题是TLS连接复用:当sub3、sub4.mydomain.com的证书为通配符证书(或SAN扩展包含对方域名)时,浏览器会识别到两个域名指向同一个公网IP+端口,会复用已建立的TLS连接,不会重新发起携带SNI的SSL握手。HAProxy仅在首次SSL握手时识别SNI转发,后续复用的连接会全部走首次握手匹配的backend,就出现了先访问哪个子域名,后续同IP的其他子域名就跳转到对应后端的问题。
修复方案

方案1(推荐,适配SSL passthrough要求)

确保sub3、sub4.mydomain.com使用独立的单域名证书,证书的SAN扩展不包含对方域名。此时浏览器复用TLS连接时会校验证书域名不匹配,自动重新发起SSL握手并携带正确的SNI,HAProxy可正常匹配转发规则。

方案2(兼容小流量场景,需HAProxy 2.0+)

在websites_443前端配置中添加规则,拒绝复用的TLS会话,强制每次新域名访问都重新握手:

frontend websites_443
    bind *:443
    mode tcp
    option tcplog
    tcp-request inspect-delay 5s
    tcp-request content accept if { req_ssl_hello_type 1 }
    # 新增如下规则,拒绝复用的SSL会话
    tcp-request content reject if { ssl_fc_session_reused }

    # 原有ACL和use_backend规则保持不变

注意:该方案会略微增加TLS握手的性能开销,适合访问量不大的场景。

方案3(如果允许调整需求,放弃SSL passthrough)

在HAProxy侧配置SSL终止,将443前端改为HTTP模式,基于Host头转发请求,天然不受TLS连接复用影响,同时可以配置HTTP/2、统一证书管理等额外能力。

配置优化建议

你当前的配置存在一处疏漏:sub4_443 backend的server行缺失check参数,若需要HAProxy自动检测后端节点可用性,建议补充为:

backend sub4_443
    mode tcp
    balance roundrobin
    option ssl-hello-chk
    server sub4 d.d.d.d:443 check

内容的提问来源于stack exchange,提问作者Przemysław Witek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:21:02