我一直在使用ARR和重写规则来轻松访问我的Tomcat应用程序。
如果应用程序在:http://localhost:8090/alfresco
在重写规则之后,可以访问:http://localhost/alfresco
以下是我一直使用的重写规则的一个例子:
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
<match url="(alfresco.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CACHE_URL}" pattern="^(http?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://localhost:8090/{R:1}" />
</rule>
现在我遇到的问题是我有另一个本地服务器,它具有相同的tomcat应用程序名称和端口。现在我想开发一个重写规则,以便在我访问时:http://localhost/alfresco1
它应该带我到那个url为http://172.23.1.168:8090/alfresco
答案 0 :(得分:1)
您可以使用以下配置:
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
<match url="^(alfresco)1/?(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CACHE_URL}" pattern="^(http?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://172.23.1.168:8090/{R:1}/{R:2}" />
</rule>
<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
<match url="^(alfresco)/?(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CACHE_URL}" pattern="^(http?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://localhost:8090/{R:0}" />
</rule>
它的作用:
alfresco1
开头,则会使用http://172.23.1.168:8090/alfresco/requested_path
和{R:1}
back references将其重写为{R:2}
。alfresco
开头,则会使用匹配的字符串back reference将其重写为http://localhost:8090:8090/alfresco/requested_path
。此配置基于the fact:
规则按照指定的顺序进行评估
在配置文件中定义规则的顺序非常重要。