我有一个负载平衡基础设施,其中有一个 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 证书。但我不知道如何解决这个问题。
任何帮助都非常感谢。