Различение вызываемого URL для перезаписи ответа для приложения tomcat через обратный прокси-сервер IIS ARR
Привет сообществу в Serverfault!
У меня возникла проблема при попытке настроить IIS для открытия соответствующего приложения менеджера на двух серверах Tomcat на одном компьютере.
Когда я звоню на сайты напрямую через http://servername:8081/manager
а также http://servername:8080/manager
(другой Tomcat) соответственно все работает нормально.
Кошмар начинается, когда я пытаюсь перенаправить запрос на http://servername/manager7
к первому Tomcat и http://servername/manager8
на второй сервер. Ссылки в HTML Resonse всегда содержат /manager7/... даже если я позвоню по URL http://servername/manager8
,
Ниже приведены мои правила переписывания. Я установил их на уровне сервера.
<rewrite>
<globalRules>
<clear />
<rule name="Tomcat7" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*7*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://wwwts02:8081/{R:1}{R:2}" />
</rule>
<rule name="Tomcat8" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*8*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="http://wwwts02:8080/{R:1}{R:2}" />
</rule>
</globalRules>
<outboundRules>
<clear />
<rule name="Tomcat8" preCondition="Recognize Tomcat8" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match filterByTags="A, Form, Img, Link, Script" pattern="/manager*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
</conditions>
<action type="Rewrite" value="/manager8{R:1}" />
</rule>
<rule name="Tomcat7" preCondition="Recognize Tomcat7" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match filterByTags="A, Form, Img, Link, Script" pattern="/manager*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
</conditions>
<action type="Rewrite" value="/manager7{R:1}" />
</rule>
<preConditions>
<preCondition name="Recognize Tomcat8">
<add input="{REQUEST_URI}" pattern="(.)*/(.*)8/(.*)" />
</preCondition>
<preCondition name="Recognize Tomcat7">
<add input="{REQUEST_URI}" pattern="(.*)/(.*)7(.*)" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
Кто-нибудь может придумать другие варианты, которые у меня есть?
Я также попробовал ISAPIRedirect.dll, предлагаемый Microsoft, но, похоже, он вообще не поддерживает переписывание ответов HTTP.
Пожалуйста, направьте меня, что попробовать дальше.
Любая помощь будет принята с благодарностью и вы можете запросить дополнительную информацию, на которую вам нужно ответить.
Извините за мой, вероятно, плохой английский, так как я немец.
1 ответ
Образец соответствия *7*
является недействительным. Это говорит <nothing><any times>
с последующим <7><any times>
, чтобы быть более ясным: это соответствует всем вещам, потому что есть 0 or more
7
символы включены.
Вы можете хотеть соответствовать чему-либо. лайк (.*7.*)
- скобки для разрешения ссылок с {R:1}
,