好的
所以我在几个 AJP 端口上设置了多个 tomcat 实例,我还在端口 8090 上监听 Apache httpd(因为我现在有另一个应用程序已经在使用 8080)。
我已经使用 Jk Mount 和以下 vhosts 配置成功地将 mydomain.com:8090/demo 和 mydomain.com:8090/preprod 等 url 映射到它们各自的 tomcat 实例;
<VirtualHost *:8090>
JkMount /preprod* preprod
JkMount /demo* demo
</VirtualHost>
但我也希望“根”地址映射到另一个 tomcat 实例,这将成为实时/生产,即我希望 mydomain.com:8090/映射第三个 tomcat 实例。
目前,如果我只是在上面的配置中添加一行,什么也不会发生或改变;
JkMount /* rootwar
如果我浏览到 mydomain.com:8090,我只会看到同样无聊的 apache httpd 登录页面,让我知道它正在运行(即 httpd/htdocs 中的 index.html)
是否可以使用 JkMount 将“根”地址内容重定向到 tomcat 实例?
我可以看到像/* 这样的规则也会匹配像 mydomain.com/preprod 这样的 URL,但我希望按顺序应用规则,所以如果/* 出现在最后,它实际上将是一个“如果它不是一个其他环境,然后直接到 root/production"
为了清楚起见,我正在尝试设置以下内容;
mydomain.com:8090/preprod --> myApp running in tomcat1
mydomain.com:8090/demo --> myApp running in tomcat2
mydomain.com:8090 --> myApp running in tomcat3
最佳答案
好吧,事实证明我对 JkMount 东西的跌落行为是正确的,因此是这样的配置;
<VirtualHost *:8090>
JkMount /preprod* preprod
JkMount /demo* demo
JKMount /* root
</VirtualHost>
效果很好,其中带有/preprod 的 url 到达 tomcat1,/demo 进入 tomcat2,其他所有内容进入 tomcat3 以获得 root。所以 JkMount/* root 行显然是最后一个尝试的规则,并且只有在没有其他规则与 url 匹配的情况下才“捕获所有”(因为它的/*)。
很好。
关于tomcat - 如何让httpd转发到不同url的多个tomcat,包括/?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5271191/