我有两个指向硬件负载平衡器的公共网站(foo.com 和 bar.com)。该硬件将流量转发到我的服务器,如下所示:
http://foo.com ==> 端口 7700
https://foo.com ==> 端口 7701
http://bar.com ==> 端口 7800
https://bar.com ==> 端口 7801
我的服务器目前是一个旧的 iPlanet 盒子,它定义了两个虚拟服务器(foo.com 用于 7700、7701 和 bar.com 用于 7800、7801)。由于负载均衡器直接转发到这些端口,所以一切正常。
我现在需要将这些网站移植到 Apache 2.2 + JBoss 6.0 配置,而我目前不知道实现这一点的最佳实践是什么。
我已经设置 Apache 来监听我的四个端口(7700、7701、7800、7801)并为 7701、7801 配置 SSL。我假设最好让 Apache 处理 SSL 握手和连接。我在 Apache 中设置了 4 个虚拟主机条目,如下:
<VirtualHost *:7700>
DocumentRoot "/htdocs/foo.com"
ServerName foo.com
</VirtualHost>
<VirtualHost *:7701>
DocumentRoot "/htdocs/foo.com"
ServerName foo.com
SSLEngine on
SSLCipherSuite ALL:...
SSLCertificateFile "/cert/foo.com.crt"
SSLCertificateKeyFile "/cert/foo.com.key"
</VirtualHost>
<VirtualHost *:7800>
DocumentRoot "/htdocs/bar.com"
ServerName bar.com
</VirtualHost>
<VirtualHost *:7801>
DocumentRoot "/htdocs/bar.com"
ServerName bar.com
SSLEngine on
SSLCipherSuite ALL:...
SSLCertificateFile "/cert/bar.com.crt"
SSLCertificateKeyFile "/cert/bar.com.key"
</VirtualHost>
我已经用静态内容对此进行了测试,HTTP 和 HTTPS 连接都正常工作。
对于我的 JBoss 配置,我目前将我的应用程序部署为 /foo 和 /bar,尽管我不知道这是否应该是最终配置。我想要完成的是:
将所有流量从 7700/7701 转发到http://localhost:8080/foo,从 7800/7801 转发到http://localhost:8080/bar。不过,我不想在公共 URL 中看到 /foo 和 /bar - 用户应该只看到http://www.foo.com和http://www.bar.com。
有没有办法配置 mod_jk 将请求转发到特定的 URL?或者我应该寻找在端口 A 上让 JBoss 主机 foo.com 和在端口 B 上的 bar.com 的方法——并且只让 mod_jk 分别转发到每个端口?