我们正在考虑从Websphere转移到Tomcat。 我试图根据Apache Web服务器中的虚拟主机指令从Apache Web服务器发送stream量到Tomcat。
在玩了一段时间之后,我有了一些工作,但是我注意到,如果我在Apache的第一个VirtualHost中有一个JKMount指令,所有的虚拟主机都会发送到应用服务器。 如果我将虚拟主机中的JKMount进一步放在configuration中,那么只有该虚拟主机适用于该请求。
例如,下面的configuration是我的症状
mysite.com/Webapp1/ – >我parsing到正确的应用程序mysite2.com/Webapp1/ – >我parsing到正确的应用程序(坏!)mysite.com/MonitorApp/ – >我parsing到正确的应用程序mysite2 .com / MonitorApp / – >我parsing到正确的应用程序(坏!)mysite.com/Webapp2/ – >我没有得到应用程序(好)mysite2.com/Webapp2/ – >我parsing到适当的应用
这是我的Web服务器虚拟主机的样子。
<VirtualHost 255.255.255.1:80> ServerName mysite.com ServerAlias aliasmysite.ca ##all our rewrite rules JkMount /Webapp1/* LoadBalanceWorker JKmount /MonitorApp/* LoadBalanceWorker </VirtualHost> <VirtualHost 255.255.255.2:80> ServerName mysite2.com ServerAlias aliasmysite2.ca ##all our rewrite rules JkMount /Webapp2/* LoadBalanceWorker </VirtualHost>
我们正在Solaris10上运行apache webserver 2.2.10和tomcat 7.0.29
我已经在这里发布了我们的架构的图像。 http://imgur.com/IFaA6Rh
我没有在Tomcat上定义VirtualHosts。 根据我读过的内容,我的理解是只有在我直接访问Tomcat的时候才需要。
任何援助表示赞赏。
编辑
这是我的worker.properties。
worker.list= LoadBalanceWorker,App1,App2 worker.intApp1.port=8009 worker.intApp1.host=10.15.8.8 worker.intApp1.type=ajp13 worker.intApp1.lbfactor=1 worker.intApp1.socket_timeout=30 worker.intApp1.socket_connect_timeout=5000 worker.intApp1.fail_on_status=302,500,503 worker.intApp1.recover_time=30 worker.intApp2.port=8009 worker.intApp2.host=10.15.8.9 worker.intApp2.type=ajp13 worker.intApp2.lbfactor=1 worker.intApp2.socket_timeout=30 worker.intApp2.socket_connect_timeout=5000 worker.intApp2.fail_on_status=302,500,503 worker.intApp2.recover_time=30 worker.LoadBalanceWorker.type=lb worker.LoadBalanceWorker.balanced_workers=intApp1,intApp2 worker.LoadBalanceWorker.sticky_session=1
Apache中的每个虚拟主机使用ServerName和ServerAlias“捕获”请求。 该请求然后不被其他虚拟主机处理。 因此根据你的conf:
具有mysite.com或aliasmysite.ca主机头的请求将只能访问URI:s / Webapp1 / *和/ MonitorApp / *。
同样,使用mysite2.com或aliasmysite2.ca主机头的请求将只能访问URI / Webapp2 / *。
根据你的症状描述(不完全清楚),我将这些组合解释为不起作用,因此这将是一个完全预期的结果:
最后一个似乎是故意的,前两个不是。 如果这是正确的,那么这是我的build议:
<VirtualHost 255.255.255.1:80> ServerName mysite.com ServerAlias aliasmysite.ca JkMount /Webapp1/* LoadBalanceWorker JKmount /MonitorApp/* LoadBalanceWorker </VirtualHost> <VirtualHost 255.255.255.2:80> ServerName mysite2.com ServerAlias aliasmysite2.ca JkMount /Webapp1/* LoadBalanceWorker JkMount /Webapp2/* LoadBalanceWorker JKmount /MonitorApp/* LoadBalanceWorker </VirtualHost>
即使我误解了你的描述,我希望这已经足够清楚地引导你了。
我不确定我是否理解了您的架构,但看起来您有两组网站要与域名分开。 你只有一个工人“LoadBalanceWorker”。 你应该有两个工作人员一个公共应用程序,另一个员工应用程序。