使用mod_proxy_ajp通过SSL在Glassfish v3之前的Apache

我希望这里有一些解决scheme可以很容易地解决我在几个论坛上search时遇到的问题:我需要将一个Glassfish v3应用程序服务器放在Apache 2.2.x web服务器的后面,就像我的webhoster提供的一些部分,比如webmail ,在networking服务器上运行(所以我不能closures这个)。 因此,我决定使用更新的解决scheme“mod_proxy_ajp”(它是Apache提供的),而不是更复杂的“mod_jk”,通过Apache将请求传递给Glassfish。 我到现在为止做的是这样的:

Apache包含“/etc/httpd/conf.d/proxy_ajp.conf”,其中包含:

  • LoadModule proxy_ajp_module modules / mod_proxy_ajp.so
  • ProxyPass /邮件!
  • ProxyPass / ajp:// localhost:8080 /
  • ProxyPassReverse / ajp:// localhost:8080 /

Glassfish的:

  • http-listener-1正在8080上启用“JK监听器”
  • http-listener-2正在监听8181,并使用我的SSL证书启用了安全性

但是我想要做的是这样的:

  1. 将“https://webmail.mydomain.com”的所有请求路由到Apache(webhoster email web-frontend)
  2. 将所有其他请求HTTP和HTTPS路由到GlassFish。 对于HTTP 8080或8009上的Glassfish http-listener-1,对于使用在8181上使用我的Glassfish http-listener-2注册的SSL证书的HTTPS(在两个方向上,传递和反向这些端口对用户不可见)
  3. 强制将所有对Glassfish的请求redirect/切换到HTTPS,或者基于特定资源的web.xml安全configuration(somefile.html)强制从HTTP切换到HTTPS(或者任何其他解决scheme来执行此操作)

如果有人可以提供一个简短的描述来解决这三个任务,我会非常高兴,因为我不深入Java Webpipe理。
在此先感谢和欢呼
〜limubai

这是很多问题! 这听起来像是你试图通过Apache来代理GlassFish,所以用户可以在标准端口(80和443)上访问你的应用程序,并且你有多个应用程序,多个域,并且你想使用SSL。

那么,在你面前你有很多工作要做! 您可能需要查看Apache上的虚拟主机; 特别是webmail.mydomain.com的一个虚拟主机,然后是mydomain.com的另一个虚拟主机。

如果您的网络服务器上没有两个IP地址(两个网卡),则必须使用基于名称的虚拟主机。 请注意,基于名称的虚拟主机和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