我有兩個公共網站(foo.com和bar.com)指向一個硬件負載平衡器。這種硬件的流量轉發到我的服務器如下:將兩個域路由到相同的JBoss實例
http://foo.com ==>端口7700
https://foo.com ==>端口7701
http://bar.com ==>端口7800
https://bar.com ==>端口7801
我的服務器目前是舊的iPlanet盒子它定義了兩臺虛擬服務器(foo.com for 7700,7701和bar.com for 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,儘管我不知道這應該是最終配置。我想做到的是:
轉發所有流量從七千七百零一分之七千七百到http://localhost:8080/foo,並從7801分之7800到http://localhost:8080/bar。我不想在公共URL中看到/ foo和/ bar,但用戶應該只看到http://www.foo.com和http://www.bar.com。
有沒有辦法配置mod_jk將請求轉發到特定的URL?或者我應該考慮如何讓JBoss主機foo.com在端口B上的端口A和bar.com上運行 - 並且只需將mod_jk分別轉發到每個端口?
我不確定URL重寫是否有效。我認爲問題在於我無法找到一種方法讓JBoss在端口7700上偵聽爲foo.war提供內容,並在端口7800上偵聽爲bar.war提供內容。我發現JBoss真的會在多個端口上偵聽,但不允許我指定每個端口上的內容。 – 2010-09-08 20:51:53
@Fibber - 我根據你的評論更新了我的答案;我認爲你幫助我找到了一個更簡單的潛在解決方案。 – mlschechter 2010-09-09 02:02:31
非常感謝 - 這個訣竅!我必須對ProxyPass和ProxyPassReverse語句進行一些小調整才能正常工作:我在servlet名稱後加了一個斜槓 - 即localhost:8080/foo/- 沒有它,JBoss查找/ foofoo的URI: ) – 2010-09-09 05:02:23