Estou usando o IIS para reverter solicitações HTTP de proxy para um aplicativo nodejs em execução na mesma máquina.
Os módulos de reescrita de URL e ARR estão instalados e a configuração de proxy verificada. A correspondência de URL parece boa: se eu alterar a regra para redirecionar, funcionará conforme o esperado. Usando a reescrita, recebo um erro 404.
O ponto de extremidade da API é api.url.com/getContent/ofertas
. A pasta raiz do site IIS é W:\sites\LocalUser\site\api
. Aqui está o web.config
arquivo.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="UrlRewriteLocalhost" enabled="true" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://localhost:8801/{R:1}" />
</rule>
</rules>
</rewrite>
<defaultDocument>
<files>
<remove value="index.htm" />
<remove value="index.html" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
Tenho certeza de que no passado tive uma configuração semelhante em outra máquina com um web.config
arquivo semelhante. Eu resolvi problemas no passado (principalmente sobre FTP) usando procmon e aqui estão minhas descobertas:
Estes são os logs procmon quando acesso o URL com a regra de regravação versus redirecionamento. Observe que na regra de redirecionamento o web.config
arquivo é resolvido no caminho correto (seta vermelha). Com a regra de reescrita, parece que não pode ser resolvido para o caminho correto.
Erro 404 com a regra de reescrita
Além disso, se eu interpretar a descrição do erro corretamente, parece que não está encontrando um manipulador de arquivo apropriado, porque não há nenhum configurado. Além disso, olhando para o 'PhysicalPath', parece que está solicitando o caminho errado, o que faz sentido, apoiado pelos logs do procmon.
Eu li em algum lugar que a reescrita de URL vem antes da situação dos mapeamentos do manipulador, então isso significa que a reescrita de URL não está funcionando corretamente? Para onde eu vou depois daqui?