Привет сообществу 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-ответов.
Пожалуйста, посоветуйте мне, что делать дальше.
Мы будем очень благодарны за любую помощь, и не стесняйтесь спрашивать дополнительную информацию, на которую вам нужно ответить.
Извините за мой, вероятно, плохой английский, так как я немец.
Соответствие шаблону *7*
является недействительным. Это говорит <nothing><any times>
с последующим <7><any times>
, чтобы быть более ясным: он соответствует всем, потому что есть 0 or more
7
символы включены.
Вы можете сопоставить sth. лайк (.*7.*)
- скобки, позволяющие ссылаться на {R:1}
.