我正在尝试使用 apache 设置负载均衡器。与后端服务器的通信是 TLS 加密的。当我启用健康检查时,只要 ProxySSL* 指令设置在 VHost 级别,而不是在代理部分内,它就可以工作。当我将它们移动到代理部分时,不再正确评估 SSL/TLS 设置(到后端的连接使用默认的 SSL/TLS 设置,而不是指定的设置)。但是根据文档,应该可以在 Proxy 部分中定义 SSL/TSL 设置,这应该允许为不同的 LoadBalancers 设置不同的 SSL/TLS 设置。
什么有效:
<VHost ...>
SSLProxyEngine on
ProxyPass "/" "balancer://mybalancer"
SSLProxyProtocol [a protocol]
SSLProxyCipherSuite [a cipher suite]
<Proxy balancer://mybalancer>
BalancerMember https://www.backend1.com hcinterval=1 hcmethod=get hcuri=/healthcheck1.php
BalancerMember https://www.backend2.com hcinterval=1 hcmethod=get hcuri=/healthcheck2.php
</Proxy>
</VHost>
在上面的示例中,健康检查以及普通请求使用指定的协议和 CipherSuite。此解决方案的问题是,我无法在具有不同 SSL/TLS 设置的同一 VHost 内创建第二个平衡器。不幸的是,这正是我需要的。
什么不起作用:
<VHost ...>
SSLProxyEngine on
ProxyPass "/" "balancer://mybalancer"
ProxyPass "/2" "balancer://mybalancer2"
<Proxy balancer://mybalancer>
SSLProxyProtocol [a protocol]
SSLProxyCipherSuite [a cipher suite]
BalancerMember https://www.backend1.com hcinterval=1 hcmethod=get hcuri=/healthcheck1.php
BalancerMember https://www.backend2.com hcinterval=1 hcmethod=get hcuri=/healthcheck2.php
</Proxy>
<Proxy balancer://mybalancer2>
SSLProxyProtocol [another protocol]
SSLProxyCipherSuite [another cipher suite]
BalancerMember https://www.backend3.com hcinterval=1 hcmethod=get hcuri=/healthcheck1.php
BalancerMember https://www.backend4.com hcinterval=1 hcmethod=get hcuri=/healthcheck2.php
</Proxy>
</VHost>
像这样,指定的 Protocol 和 CipherSuite 对健康检查没有影响,相反,两个平衡器的健康检查使用 httpd.conf 的全局范围中指定的默认设置。
我认为为健康检查设置 SSLProtocol 和 SSLCipherSuite 是很常见的情况,我想知道是否有人有一个有效的设置,或者是否有人面临同样的问题。
在此先感谢您提供任何帮助或提示进一步寻找的地方。