我正在尝试在不同 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 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!