我在Tomcat的webapps文件夹(app1.0,app1.1,app1.2等)中部署了多个应用程序。当我点击www.example.com:8080/app1.0时,出现相应的应用程序。
但是如何在负载平衡服务器上做到这一点?例如,我有一个网站,可以单击一个按钮(app1.0,app1.1,app1.2等),然后弹出一个URL,如:www.lb.com/app1.0/.../ ...如何根据URL中的应用程序版本定向到该应用程序?使用RewriteCond和正则表达式并将其传递给ProxyPass?我真的不怎么编写脚本,有人可以帮忙吗? :)
编辑:这是我为1个Tomcat的2个应用程序和2个Tomcat的2个应用程序所做的,但是有时我得到404,因为负载均衡器选择了具有另一个版本的Tomcat。
<VirtualHost *:80>
#Add a http header to explicitly identify the node and be sticky
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
#Declare the http server pool
<Proxy "balancer://plf">
BalancerMember "http://worker1.com:8080" route=worker1
BalancerMember "http://worker2.com:8080" route=worker2
ProxySet stickysession=ROUTEID
ProxySet lbmethod=bybusyness
</Proxy>
#Common options
ProxyRequests Off
ProxyPreserveHost On
#Declare the redirection for the http requests
ProxyPassMatch "/app(.*)" "balancer://plf/app$1"
ProxyPassReverse "/app(.*)" "balancer://plf/app$1"
答案 0 :(得分:0)
这是我的方法:
1):定义平衡器代理:
<Proxy balancer://portalcluster stickysession=JSESSIONID>
BalancerMember ajp://TOMCATSERVER1:8009 route=TOMCARSERVER1-0
BalancerMember ajp://TOMCATSERVER2:8009 route=TOMCATSERVER2-100
</Proxy>
2)在您的VirtualHost中对其进行代理:
Listen 443
<Virtualhost *:443>
ServerName example.com
Alias /static /var/www/portalstatic
ProxyPass /static !
ProxyPass / balancer://portalcluster/
ProxyPassReverse / balancer://portalcluster/
</Virtualhost>
NB 我从这些配置中删除了一个 lot 配置,这些配置与问题(日志,拒绝子句,证书指令等)无关。这只是为了说明我做代理的方式。
NB2 我确实离开了/static
技巧,因为这通常是您要执行的操作。静态文件必须保留在HTTP上,并且不能始终从Tomcat发送。