IIS-> Tomcat重定向:默认的多个worker

时间:2013-09-03 23:59:01

标签: tomcat iis webserver ajp

我正在尝试在IIS中的单个域后面配置多个Tomcat(7)实例。 Tomcat实例都在不同的端口上运行。我已经安装了Tomcat isapi_rediect.dll并配置了IIS。

一切都与重定向器一起工作,除了(你知道即将到来)我被告知“所有其他流量必须映射到两个实例中的一个(它们是非常不同的应用程序)。可能更准确地说除了特定模式之外的所有请求都需要映射到一个工作程序,并且只有特定模式(/ rpt)需要转到另一个工作程序。

我在workers.properties中定义了两个worker:

worker.list=ajp13_1,ajp13_2
worker.ajp13_1.port=8009
worker.ajp13_2.port=8010

以及uriworkermap.properties中的以下内容:

/wxx|/*=ajp13_1
/rpt|/*=ajp13_2

有了这个,一切似乎都很好。除了一些(相当多)不包括wxx范围的请求之外。我真的需要将rpt和所有子内容映射到ajp3_2以及所有其他请求到ajp3_1。

如果我添加

/ | * = ajp13_1

然后ajp3_2实际上变得无法访问,并且wildchar匹配将偶数/ rpt / * URI映射到ajp3_1。

有什么办法可以做我想做的事吗?我非常感谢任何帮助 - 我花了太多时间一遍又一遍地阅读相同的参考文献。

1 个答案:

答案 0 :(得分:0)

tomcat连接器在两次传递中进行匹配。第一遍包括主持人,第二遍不包括主持人。所以如果你有这样的请求:

http://www.mydomain.com/rpt/somepage.jsp

连接器会尝试首先将“/www.mydomain.com/rpt/somepage.jsp”与可用的映射匹配,如果它们都不匹配,则尝试“/rpt/somepage.jsp”。这意味着默认映射(“/ *”)将是第一次传递匹配的唯一内容,因为您的其他映射都不会占用主机。我相信你可以通过以下方式达到预期的效果:

/*/rpt|/*=ajp13_2
/|*=ajp13_1