2011-02-07 56 views
2



我希望這裏是圍繞一些裂縫可以輕鬆解決,我甚至在一些論壇搜索後掙扎的問題:我需要後面放置一個Glassfish的第三版應用服務器一個Apache 2.2.x web服務器就像webhoster提供的一些部分,比如webmail,正在web服務器上運行(所以我不能關閉它)。因此,我決定使用較新的解決方案「mod_proxy_ajp」(它隨附在Apache中),而不是更復雜的「mod_jk」,以通過Apache將請求傳遞給Glassfish。我所做的到現在爲止是這樣的:

阿帕奇包括「/etc/httpd/conf.d/proxy_ajp.conf」,其中包含:阿帕奇GlassFish v3中使用SSL的前端使用的mod_proxy_ajp

  • 的LoadModule proxy_ajp_module模塊/ mod_proxy_ajp.so
  • 的ProxyPass /郵件!
  • 的ProxyPass/AJP://本地主機:8080/
  • ProxyPassReverse/AJP://本地主機:8080/

Glassfish的:

  • HTTP偵聽器1正在偵聽8080用「JK監聽」啓用
  • HTTP偵聽器2監聽8181,並使用我的SSL證書

但我想這樣做能有安全是這樣的:

  1. 路由到Apache(託管商的電子郵件網絡前端)
  2. 路由所有其他請求HTTP和HTTPS來Glassfish的所有請求「https://webmail.mydomain.com」。對於HTTP 8080或8009上的Glassfish http-listener-1,對於使用在8181上使用我的Glassfish http-listener-2註冊的SSL證書的HTTPS(在兩個方向上,傳遞和反向這些端口對用戶不可見)
  3. 強制將所有對Glassfish的請求重定向/切換到HTTPS,或者基於特定資源的web.xml安全配置(somefile.html)強制從HTTP切換到HTTPS(或者任何其他解決方案來執行此操作)

如果有人可以提供一個簡短的描述來解決這3個任務,我會非常高興,因爲我對Java Web管理並不深入。
提前感謝和歡呼聲
〜limubai

回答

4

這是一個很大的問題!這聽起來像是您試圖通過Apache代理GlassFish,因此用戶可以在標準端口(80和443)上訪問應用程序,並且您有多個應用程序,多個域,並且您想使用SSL。

那麼,你還有很多工作要做!您可能需要查看Apache上的虛擬主機;特別是,一個用於webmail.mydomain.com的虛擬主機,另一個用於mydomain.com。

如果您的網絡服務器上沒有兩個IP地址(兩個NIC),那麼您必須使用基於名稱的虛擬主機。請注意,基於名稱的虛擬主機和SSL不能輕鬆協同工作;您可能必須使用通用名爲mydomain.com和別名webmail.mydomain.com(altSubjectName擴展名)的SSL證書。

上配置Apache的信息可以在這裏找到:

http://httpd.apache.org/docs/2.2/vhosts/

上使用基於域名的虛擬主機使用SSL的信息可以在這裏找到:

http://wiki.apache.org/httpd/NameBasedSSLVHosts

關於配置的GlassFish可以在這裏找到:

http://download.oracle.com/docs/cd/E18930_01/html/821-2416/gfaad.html