Назад | Перейти на главную страницу

Различение вызываемого 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-ответов.

Пожалуйста, посоветуйте мне, что делать дальше.
Мы будем очень благодарны за любую помощь, и не стесняйтесь спрашивать дополнительную информацию, на которую вам нужно ответить.

Извините за мой, вероятно, плохой английский, так как я немец.

Соответствие шаблону *7* является недействительным. Это говорит <nothing><any times> с последующим <7><any times>, чтобы быть более ясным: он соответствует всем, потому что есть 0 or more 7 символы включены.

Вы можете сопоставить sth. лайк (.*7.*) - скобки, позволяющие ссылаться на {R:1}.