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
: