haproxy ssl_fc_sni无法正确匹配

时间:2016-05-23 17:56:27

标签: haproxy

我的HAproxy配置有点迷失。目前运行1.6.4。我们有一个系统,使用客户提供的SNI来确定后端。

这在过去一直运作良好,但是今天我已经在以下前端添加了use_backend规则,但它无法按预期运行:

frontend fe_ssl
        description "SSL Endpoint"
        bind 1.2.3.4:443 ssl crt /etc/haproxy/certs/

        tcp-request inspect-delay 5s
        tcp-request content accept if { req_ssl_hello_type 1 }

        use_backend bk_t1 { ssl_fc_sni -i subdomain.domain.com }
        use_backend bk_t2 { ssl_fc_sni -i subdomain-test.domain.com }

以前只有后端bk_t1是presend,它确实按预期工作:如果访问subdomain.domain.com流量被转发到bk_t1,如果使用指向同一IP的任何其他名称,则会产生HTTP 503,因为没有匹配后端。

现在,在添加bk_t2后,它不会永远匹配前端配置中第二个提到的后端请求。含义:

  • 如果首先定义bk_t1,则无论是访问bk_t1还是subdomain.domain.com

  • ,所有请求都将路由到subdomain-test.domain.com
  • 如果首先定义bk_t2,则无论是访问bk_t2还是subdomain.domain.com

  • ,所有请求都将路由到subdomain-test.domain.com

我认为它可能与这两个子域部分相同但我无法找到任何需要转义“ - ”的信息有关,甚至可以从-i切换到-m str或将主机名放在引号中不会改变任何内容

1 个答案:

答案 0 :(得分:1)

经过两个小时的故障排除并撰写此条目后,我意识到我的错误非常明显。要匹配的语句缺少if

use_backend bk_t1 **if** { ssl_fc_sni -i subdomain.domain.com }
use_backend bk_t2 **if** { ssl_fc_sni -i subdomain-test.domain.com }