背景信息:(问题在底部)
我正在尝试连接一个客户端,该客户端有8台服务器,每台服务器都有唯一的IP地址。客户端在所有服务器上都使用相同的SSL证书(在此示例中,证书名称为 www.all_servers.com)。客户端仅允许通过https进行传入请求。
我正在尝试使用mod_proxy创建一个Apache代理,将不同的URI映射到不同的服务器。例如:
https://PROXY_SERVER/SERVER1/{REQUEST}
这将发送{REQUEST}到server1服务器
https://PROXY_SERVER/SERVER2/{REQUEST}
我会将{REQUEST}发送到server2。 迄今为止,非常简单。
在Apache 2.2中,可以通过以下方式使用IP地址来实现:
SSLProxyEngine On
ProxyPass /server1 https://1.1.1.1/
ProxyPassReverse /server1 https://1.1.1.1/
ProxyPass /server2 https://1.1.1.2/
ProxyPassReverse /server2 https://1.1.1.2/
这是由于Apache 2.2没有检查证书是否匹配(1.1.1.1 != www.all_servers.com)导致的。
然而,在Apache 2.4中,我现在遇到了证书问题(理所当然)。 (这个确切的代码在apache 2.2上运行正常)
[Thu Oct 10 12:01:48.571246 2013] [proxy:error] [pid 13282:tid 140475667224320] (502)Unknown error 502: [client 192.168.1.1:48967] AH01084: pass request body failed to 1.1.1.1:443 (1.1.1.1)
[Thu Oct 10 12:01:48.571341 2013] [proxy:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH00898: Error during SSL Handshake with remote server returned by /server1/asd
[Thu Oct 10 12:01:48.571354 2013] [proxy_http:error] [pid 13282:tid 140475667224320] [client 192.168.1.1:48967] AH01097: pass request body failed to 1.1.1.1:443 (1.1.1.1) from 192.168.1.1 ()
我不能使用/etc/hosts,因为只有一个服务器可以工作,使用:
1.1.1.1 www.all_servers.com
SSLProxyEngine On
ProxyPass /server1 https://www.all_servers.com/
ProxyPassReverse /server1 https://www.all_servers.com/
但很多服务器不会这样做。
所以,实际的问题是:
有没有一种方法可以强制mod_proxy忽略不匹配的证书。或者,有更好的方法来解决这个问题。
感谢任何对此的帮助!