如何使用HAproxy在多个域中设置SSL直通?

cbjzeqam  于 2022-11-14  发布在  HAProxy
关注(0)|答案(2)|浏览(165)

如何为多个域设置HAproxy,并在通过SSL时连接到多个后端?
为了更好地解释,图中的示例:

backend_domain_a
domain-a.com-.            .-> 123.123.123.123
             |            |
             +-> haproxy -+
             |            |   backend_domain_b
domain-b.com-'            '-> 789.789.789.789

注意每个后端服务器都将颁发自己的证书。因此需要SSL直通。

我有这种配置,但由于多种原因(关键的一个原因是缺少端口号)而无法工作:

frontend www
        bind *:80
        bind *:443
        option tcplog

        acl host_domain_a hdr(host) -i domain-a.com
        acl host_domain_b hdr(host) -i domain-b.com

        use_backend backend_domain_a if host_domain_a
        use_backend backend_domain_b if host_domain_b

backend backend_domain_a
        server web_a 123.123.123.123 check

backend backend_domain_b
        server web_b 789.789.789.789 check

换句话说,我希望Haxproxy终止SSL。
我最初想用Nginx来完成这个任务,但是很明显,它在阅读主机细节时不能作为非终止点(尽管在未来的版本中可能会有ssl preread)

cnjp1d6j

cnjp1d6j1#

在谷歌上搜索后,发现并测试了这个方法,它的工作。我真的不明白为什么有一个需要检查延迟,但它的工作!!

frontend https_frontend
    mode tcp
    option tcplog
    bind *:443
    acl tls req.ssl_hello_type 1
    tcp-request inspect-delay 5s
    tcp-request content accept if tls
    
    acl host_www req.ssl_sni -i example.com
    acl host_www req.ssl_sni -i www.example.com
    acl host_wiki req.ssl_sni -i wiki.example.com

    use_backend https_www if host_www
    use_backend https_wiki if host_wiki

backend https_www
    mode tcp
    option tcplog
    option ssl-hello-chk
    server www 192.168.1.10:443

完整文章请点击此处:https://az.id.au/ops/haproxy-http-and-https-multiple-domains-and-backends/

ppcbkaq5

ppcbkaq52#

经过广泛的研究,找不到一个健全的办法来完成这个任务。
我最终使用nginx来完成这些要求。

相关问题