我有以下设置:
我测试了两台服务器独立地将443端口流量转发到其中一台机器。他们的工作很好。
现在,我将所有到达公共IP的端口443请求转发到192.168.1.10的第一台服务器,我希望此服务器充当https://domain1.com的https服务器并重定向{{{}的请求3}}解决192.168.1.20
我试图在第一台机器中配置反向代理。它确实将域2的请求重定向到192.168.1.20的机器,但它为domain1提供证书。 如何配置反向代理以便为每个服务器提供正确的证书?
提前谢谢你。 朱莉娅
答案 0 :(得分:0)
最简单"解决方案" (好的,解决方法)是使用包含两个主机名的单个证书。如果您不能这样做,那么您需要配置Apache SNI,如下所示:SSL with Virtual Hosts Using SNI
答案 1 :(得分:0)
有人建议我尝试使用Apache2反向代理。 这有点工作但你必须在运行Apache2的机器上安装所有证书。因此,局域网上的流量不再是https,这不符合我的要求。
解决方案是使用haproxy。此程序包可以设置为https的传递。互联网上有很多此类应用的例子。它完全符合我的要求:我可以使用一个公共IP在nat路由器后面的LAN上托管许多https服务器。该流量由haproxy作为https发送到LAN上指示的服务器。如果有人有兴趣,我将很乐意分享我的配置文件,正好解决了我在问题中提出的问题。
答案 2 :(得分:0)
致Robert M: 这是我在默认haproxy.cfg文件末尾添加的配置:
frontend ft_https
mode tcp
option tcplog
bind *:443
tcp-request inspect-delay 5s
tcp-request content accept if { req.ssl_hello_type 1 }
acl domain1_com req.ssl_sni -m end domain1.com # all url ending with domain1.com
acl domain2_com req.ssl_sni -i www.domain2.com # exactly www.domain2.com
use_backend b_domain1_com if domain1_com
use_backend b_domain2_com if domain2_com
default_backend b_default
backend b_default
mode tcp
option tcplog
server srv_default 127.0.0.1:1443
backend b_domain1_com
mode tcp
option tcplog
server srv_domain1 192.168.1.10:1443
backend b_domain2_com
mode tcp
option tcplog
server srv_domain2 192.168.1.20:443
我不得不将第一台服务器上的apache的https端口更改为1443,因为haproxy和apache都不能绑定到同一台机器上的443端口,但它对用户是透明的。