ssl - 如何使用 HAproxy 为多个域设置 SSL 直通?

标签 ssl server load-balancing haproxy

如何在通过 SSL 的同时为多个域、多个后端设置 HAproxy?

图表中的示例以获得更好的解释:

                              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)

最佳答案

谷歌搜索后,找到并测试了这个方法,它有效。我真的不明白为什么需要检查延迟,但它有效!!

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/

关于ssl - 如何使用 HAproxy 为多个域设置 SSL 直通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364784/

相关文章:

apache - 我需要安装 Tomcat 吗?我已经安装了 JBoss 用于与 Apache 进行负载平衡

web-services - token 身份验证如何与负载平衡的 Web 服务配合使用

php - Paypal 访问 - SSL 证书 : unable to get local issuer certificate

java - 收到 SSLHandshakeException : Received fatal alert: handshake_failure from Payara server while trying to connect Third party URLs

html - 我的浏览器不解释我的 css 文件

java - Java 中深层内存结构的集群化选项

java - SSL 证书 X.509 导出

PHP - 如何从 shell_exec 输出中获取参数

php - php-fpm主进程重启后执行PHP脚本

java - 服务器不向连接到它的客户端发送消息