Apache ProxyPass到2个具有相同URI的不同tomcat服务器

时间:2014-06-17 22:00:53

标签: apache tomcat

我有两台带有apache http server(2.4.9)的服务器。我有两台运行tomcat 7.0.39的服务器。最终我需要在2之间进行负载平衡,但现在我只是想让这个ProxyPass配置工作。

我在2个apache servers- example.com上有一个url。它们是负载平衡的。负载平衡到位,没有问题。

我有2个应用程序,每个tomcat服务器上有1个应用程序。每个tomcat服务器都有2个运行tomcat的实例 - 每个实例位于不同的端口上。他们使用完全相同的uri运行一个非常相似的应用程序。

我需要重定向:

example.com/site1到example.com/app(for app1)

example.com/site2到example.com/app(for app2)

我可以轻松地将其重定向到仅1个应用程序:

ProxyPass / app / AppSrv:8080 / app /

ProxyPassReverse / app / http://example.com/app/

我可以访问该页面,登录,没问题。仅限单个应用程序。

当我为两个应用程序设置配置时,我也可以在这样配置时进入两个应用程序的登录页面:

ProxyPass / site1 / AppSrv:8080 / app

ProxyPassReserve / app /

ProxyPass / site2 / AppSrv:8081 / app

ProxyPassReverse / app /

两个网址都提供了tomcat应用程序登录页面。但是在此之后都没有工作 - 他们失败了。 uri读取' site1' (或' site2')不是' app'。我无法登录。

该应用程序需要uri' / app /'作为基础uri以便发挥作用。

应用程序正在侦听不同的端口,但具有相同的uri。如何将uri保留在URL中,但是更改它以便应用程序响应?

最终我必须平衡这一点,但我之前已经做过了。这是我遇到困难的部分。

1 个答案:

答案 0 :(得分:0)

好的,我终于解决了这个问题。我不得不修改标题。

ProxyPass /site1/ balancer://example.com/app/ 

ProxyPass /site2/ balancer://example.com/app/ 

<Location /site1>
ProxyPassReverse /app
ProxyPassReverseCookiePath /app /site1
Header edit Location ^(https?://)?example.com/app/ /site1/
</Location>

<Location /site2>
ProxyPassReverse /app
ProxyPassReverseCookiePath /app /site2
Header edit Location ^(https?://)?example.com/app/ /site2/
</Location>