我正在尝试在不同 VM 上使用 2 个 tomcat 实例在 ssl 模式下使用 haproxy(请参阅我之前的问题:HAProxy load balancing with tomcat SSL)。 目前,我设法让 haproxy 使用以下配置:
defaults
log 127.0.0.1 local0
option tcplog
frontend ft_test
mode http
bind 0.0.0.0:8443 ssl crt haproxy.pem
timeout client 120000ms
default_backend bk
backend bk
mode http
cookie JSESSIONID prefix
server s1 vm1:80 cookie JSESSIONID_SERVER_1 check maxconn 32
server s2 vm2:80 cookie JSESSIONID_SERVER_2 check maxconn 32
timeout connect 5000ms
timeout server 120000ms
haproxy.pem 是我从这里复制的文件(用于测试目的):http://blog.exceliance.fr/2012/09/04/howto-ssl-native-in-haproxy/
当我将虚拟机上的端口从 80 更改为 8443 时,我尝试访问 https://haproxy.vm.ip:8443 (与我对 80 端口所做的相同),我在浏览器中收到:502 Bad Gateway
错误。 我猜这与 ssl 证书有关,但我不确定如何解决这个问题(这些问题对我来说是新问题,我找不到太多信息)。
每个 tomcat 虚拟机的 server.xml(它们是相同的):
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="${catalina.home}/conf/keystore"
keystorePass="password" />
我需要在这里使用与 haproxy 配置中相同的证书吗?我试过了,但它似乎不起作用,而且我也没有找到带有 keystore 文件的 haproxy 示例。
那么,有帮助吗?想法?谢谢! :)
请您参考如下方法:
有同样的问题 -
在没有接收到间歇性 502 和 503 的情况下,我从未能够获得 1.5 以正确且一致地处理 SSL 流量。
我们最终使用了 stunnel - http://www.stunnel.org/
设置和配置非常简单。 HAproxy 仅在端口 80 上响应并通过 443 转发,以便内部流量保持加密状态。
这是一个示例 stunnel.conf 文件,可以从以下文件开始:
sslVersion = all
options = NO_SSLv2
cert=/etc/stunnel/wildcard.pem
setuid = root
setgid = root
pid = /var/run/stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
output = /var/log/stunnel.log
[service1]
accept = 10.0.0.10:443
connect = 10.0.0.10:80
TIMEOUTclose = 0
[service2]
accept = 10.0.0.11:443
connect = 10.0.0.11:80
TIMEOUTclose = 0