简体   繁体   中英

Apache ProxyPass to 2 different tomcat servers with same URI

I have 2 servers with apache http server (2.4.9) on them. I have 2 servers with tomcat 7.0.39 running on them. Ultimately I need to load balance between the 2, but right now am simply trying to get this ProxyPass configuration to work.

I have one url on the 2 apache servers- example.com. They are load balanced. The load balancing is in place and there is no issue.

I have 2 applications, 1 on each tomcat server. Each tomcat server has 2 instances of tomcat running- each on a different port. They are running a very similar application with the exact same uri.

I need to redirect:

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

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

I can redirect this easily enough for 1 application only:

ProxyPass /app/ AppSrv:8080/app/

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

I can get to the page, log in, no problem. For a singe application only.

When I set up a configuration for both applications, I can get to the login page of both applications as well when configured as such:

ProxyPass /site1/ AppSrv:8080/app

ProxyPassReserve /app/

ProxyPass /site2/ AppSrv:8081/app

ProxyPassReverse /app/

Both urls come up with the tomcat application login page. But neither work after this- they fail. The uri reads 'site1' (or 'site2') not 'app'. I cannot log in.

The application requires the uri '/app/' as the base uri in order to function.

The applications are listening on different ports, but have the same uri. How do I keep the uri in the url, but change it so the application responds?

Ultimately I have to balance this, but I've done that before. This is the part I'm having a hard time with.

Ok, I finally solved this. I had to modify the header.

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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM