HAProxy 如何为 map_dom 算出 SSL_FC_SNI

How does HAProxy figure out SSL_FC_SNI for map_dom

我有一个使用地图的 haproxy 配置。

HAProxy 配置文件包含以下行:

%[ssl_fc_sni,lower,map_dom(/etc/haproxy/domain2backend.map)]

在 domain2backend.map 中,我有以下条目:

dp.stg.corp.mydom.com dp_10293
/dp dp_10293
dp.admin.stg.corp.mydom.com dp_10345

现在,当我访问 https://dp.admin.stg.corp.mydom.com/index.html 时,它会将我引导至后端 dp_10293。然而,使用 map(/etc/haproxy/domain2backend.map) 的简单完整字符串匹配解决了问题,并将我引导到正确的后端 dp_10345。我拥有的证书是通配符证书 *.mydom.com

那么 map_dom 如何比较域以及它如何将针对 dp.admin.stg.corp.mydom.com 的请求定向到 dp.stg.corp.mydom.com

的后端

由于我使用的是 map_dom,它会根据点 (.) 拆分域并进行标记匹配,无论哪个是第一个匹配项,它 returns 就是后端。

此处 dp.admin.stg.corp.mydom.com 匹配任何

dp.admin.stg.corp.mydom.com
/dp
/admin
/stg
/corp
/mydom
/com
/dp.admin
/dp.admin.stg
/dp.admin.stg.corp
/dp.admin.stg.corp.mydom
/admin.stg.corp.mydom.com
/stg.corp.mydom.com
/corp.mydom.com
/mydom.com

在我的例子中,因为我有一个 /dp 的条目,它被路由到后端 dp_10345

map_dom 更改为 map 将解决此问题,因为 map 会执行严格的字符串比较。