O proxy reverso do IIS falha sem arrastar a barra

1

Eu tenho o IIS com os Rewrites de URL atuando como um proxy reverso para o Apache Tomcat.

example.com/app/ redireciona para example.com:8080/app/. A porta 80 redireciona para a porta 8080 no mesmo servidor.

Se eu for para example.com/app/, ele funcionará como esperado. No entanto, se eu for para example.com/app (sem a barra final), isso resultará em um erro 404.

O padrão que eu estou correspondendo para a regra de entrada é ^app/(.*) . Em seguida, a ação é reescrita para o URL http://127.0.0.1:8080/app/{R:1} .

Alguma sugestão sobre como fazer isso funcionar sem a barra final?

    
por Ryan 23.02.2017 / 18:12

2 respostas

1

Eu tive um problema semelhante e resolvi corrigi-lo criando duas regras

  1. 301 Redirecionar

padrão de pesquisa: ^ app $

URL de redirecionamento

: app /

  1. reescrever

padrão de pesquisa: ^ app /(.*)

regravar URL: link {R: 1}

    
por 25.07.2017 / 20:57
0

Para elaborar a resposta de Thomas, aqui está o arquivo de configuração depois que as regras foram criadas:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="ReverseProxyInboundRule2" stopProcessing="true">
                    <match url="^app$" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Redirect" url="app/" />
                </rule>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="http://localhost:8080/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
    
por 28.02.2018 / 10:00