Привет сообществу в Serverfault!
У меня есть проблема при попытке настроить мой IIS для открытия соответствующего менеджера APP на двух Серверах Tomcat на той же машине.
Когда я называю сайты непосредственно через http://servername:8081/manager
и http://servername:8080/manager
(другой Tomcat) соответственно, все хорошо работает.
Кошмар начинается, когда я пытаюсь перенаправить запрос к http://servername/manager7
к первому Tomcat и http://servername/manager8
к второму серверу. Ссылки в Resonse HTML затем всегда содержат/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 вообще.
Направьте меня, что попробовать затем.
Любая справка будет значительно цениться и не стесняться запрашивать дополнительную информацию, на которую необходимо ответить.
Извините за мой, вероятно, плохой английский язык, поскольку я немец.
Соответствие шаблону * 7 *
недопустимо. В нем написано <ничего> <любое время>
, за которым следует <7> <любое время>
, для большей ясности: он соответствует всем, потому что существует 0 или более
Включено 7
символов.
Возможно, вы захотите сопоставить sth. например (. * 7. *)
- скобки для разрешения ссылки с помощью {R:1}
.