Distinguir o URL chamado para reconfiguração de resposta para o aplicativo tomcat via proxy reverso ARR do IIS

1

Oi para a comunidade no Serverfault!

Eu tenho um problema ao tentar configurar o IIS para abrir o respectivo gerenciador de APP em dois servidores Tomcat na mesma máquina.

Quando eu chamo os sites diretamente via http://servername:8081/manager e http://servername:8080/manager (o outro Tomcat) respectivamente, tudo está funcionando bem.

O pesadelo começa quando tento redirecionar a solicitação para http://servername/manager7 para o primeiro Tomcat e http://servername/manager8 para o segundo servidor. Os links no HTML Resonse sempre contêm / manager7 / ... mesmo se eu chamar o URL http://servername/manager8 .

Abaixo estão minhas regras de reescrita. Eu os configuro no nível do servidor.

<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>

Alguém pode pensar em outras opções que eu tenho?
Eu também tentei o ISAPIRedirect.dll oferecido pela Microsoft, mas parece que não suporta a reescrita das respostas HTTP em tudo.

Por favor, indique-me o que deve tentar a seguir.
Qualquer ajuda será muito apreciada e fique à vontade para pedir mais informações que você precisa responder.

Desculpe pelo meu provavelmente mau inglês, como sou alemão.

    
por Tobias Schroer 12.05.2015 / 09:06

1 resposta

0

A correspondência de padrão *7* é inválida. Ele diz que <nothing><any times> seguido de <7><any times> , para ficar mais claro: corresponde a todas as coisas porque há 0 or more 7 caracteres incluídos.

Você pode querer corresponder a sth. como (.*7.*) - os colchetes para permitir a referência com {R:1} .

    
por 28.09.2017 / 19:07