write with instalar application and asp.net iis url-rewriting iis-7.5 arr

asp.net - instalar - reverse proxy with url rewrite v2 and application request routing



IIS AAR-Reescritura de URL para proxy inverso-cómo enviar HTTP_HOST (2)

Intenta usar AAR como un proxy inverso frente a varios servidores IIS de fondo.

  • Una dirección IP pública asignada al servidor que ejecuta IIS / AAR

  • A continuación, las reglas de reescritura de URL salientes se configuran para redirigir a uno de varios servidores de fondo dependiendo del nombre de host.

Funciona de alguna manera, pero siempre devuelve el sitio predeterminado de los servidores de back-end (no el asignado a un nombre de host) por lo que parece que el nombre de host (HTTP_HOST) no pasa del servidor proxy al servidor de fondo.

(He verificado omitir el proxy inverso editando hosts y el servidor back-end devuelve el sitio correcto vinculado al encabezado del host)

Este es un ejemplo de la regla (192.168.0.99 es el servidor interno, site.myco.com es el nombre de host)

<rewrite> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://192.168.1.99/{R:1}" /> </rule> </rules> </rewrite>

He intentado poner variables de corte para

<!-- Guessing server.myco.com is hard coded --> <serverVariables> <set name="HTTP_HOST" value="server.myco.com" /> </serverVariables> <!-- Guessing picked up dynamically from incoming request host header --> <serverVariables> <set name="HTTP_HOST" value="{HTTP_HOST}" /> </serverVariables>

Pero por desgracia siempre devuelve el enlace predeterminado, ¿alguna idea?


Esta publicación tiene la respuesta: Modificar encabezados con IIS7 Application Request Routing

Necesito habilitar preserveHostHeader - no puedo ver cómo lo haces en la interfaz de usuario, pero esto funciona

Ejecute esto desde la línea de comando para actualizar Machine / webroot / apphost config

%windir%/system32/inetsrv/appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost


Supongo que su servidor no le permite cambiar la variable de servidor HTTP_HOST cuando reescribe la URL.

En el nivel del sitio web donde se aplica la reescritura de URL:

A continuación, haga clic en el enlace Add... en la pestaña derecha y agregue su variable HTTP_HOST :