Apache反向代理从一个虚拟主机到两个Tomcat

有没有人有一些提示或示例如何configurationApache Http Server 2.2上的这种反向代理安排? 我支持我们在多个环境中开发的Java Web应用程序。 在多个环境中,我的意思是我们在不同端口的同一个主机上运行一个Tomcat服务器的几个实例:development = 9443,QA = 10443,production = 11443

Java Web应用程序的devise使您可以在一台服务器上托pipe多个应用程序:每个应用程序都可以在自己的根上下文中访问。 如果你不熟悉这个技术,基本上,这意味着我的所有应用程序的页面都在https://myhost.mydomain.com/myapp的/ myapp后面。

Java Web应用程序还需要使用Cookie来维护会话状态,因此任何反向代理解决scheme都需要确保将代理主机名转换回外部主机名。

我们目前通过代理https://public.mydomain.com/myapphttps://tomcatserver.mydomain.com:11443/myapp的Apache反向代理将生产的Tomcat实例共享到互联网。 我们希望打开QA Tomcat实例到互联网,以便betatesting者能够到达它,但是https://publicserver.mydomain.com/myapp URL已经被设置为生产。 所以我们试图build立第二个代理,将https://publicserver.mydomain.com/beta映射到https://tomcatserver.mydomain.com:10443/myapp

这是我到目前为止所尝试的,但它不工作。 这两个地址(/ myapp和/ beta)总是以生产Tomcat实例结束。

 <VirtualHost *:443> ServerAdmin [email protected] ServerName public.mydomain.com ServerAlias public # Proxy to production environment on tomcatserver ProxyPass /myapp/ https://tomcatserver.mydomain.com:11443/myapp/ ProxyPassReverse /myapp/ https://tomcatserver.mydomain.com:11443/myapp/ <location /myapp/> SSLRequireSSL On SetOutputFilter proxy-html ProxyPassReverseCookieDomain tomcatserver.mydomain.com public.mydomain.com ProxyPassReverseCookiePath / /myapp/ ProxyHTMLURLMap /myapp /myapp </location> # Proxy to QA environment on tomcatserver ProxyPass /beta/ https://tomcatserver.mydomain.com:10443/myapp/ ProxyPassReverse /beta/ https://tomcatserver.mydomain.com:10443/myapp/ <location /beta/> SSLRequireSSL On SetOutputFilter proxy-html ProxyPassReverseCookieDomain tomcatserver.mydomain.com public.mydomain.com ProxyPassReverseCookiePath / /myapp/ ProxyHTMLURLMap /beta /myapp </location> </VirtualHost>