如何通过 Haproxy 将有效的 SSL 流量转发到本地后端

如何通过 Haproxy 将有效的 SSL 流量转发到本地后端

我有一个负载平衡基础设施,其中有一个 haproxy 服务器作为负载平衡器,还有一些 apache 服务器作为后端。我想将 https 流量转发到后端。我知道有两种方法可以做到这一点:SSL Termination,它在 haproxy 服务器上处理 SSL 加密/解密;SSL Pass-Through,它将 https 流量转发到后端服务器。这是我的 haproxy 配置:

global
    log         127.0.0.1 local2     #Log configuration
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy             
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
frontend http_main
    bind *:80
    mode http
    option http-server-close
    option forwardfor
    default_backend app-main
backend app-main
    balance roundrobin
    server web1 192.168.1.25:80

frontend https_main
    bind *:443
    mode tcp
    option tcplog
    default_backend app-ssl

backend app-ssl
    balance roundrobin                                    
    mode tcp
    option ssl-hello-chk
    server web1 192.168.1.25:443 ssl no-sslv3

我的后端服务器也有一个公共 IP 地址。当我使用后端服务器的公共 IP 检查我的域名时,我可以在浏览器上使用经过验证的 SSL 正确查看该网站。但是当我想使用负载均衡器的 IP 地址检查域名时,我在 Firefox 上收到以下错误:

An error occurred during a connection to mydomain.com. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG

    The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
    Please contact the web site owners to inform them of this problem.

我已将本地 IP 地址 192.168.1.25 添加到后端服务器的 httpd.conf 中,用于 http 和 https 虚拟主机配置。我认为问题在于检查后端服务器的 SSL 证书。但我不知道如何解决这个问题。
任何帮助都非常感谢。

相关内容