IIS AAR - Reescritura de URL para proxy inverso - cómo enviar HOST HTTP
Tratando de usar AAR como un proxy inverso frente a varios servidores back-end IIS.
-
Una dirección ip pública asignada al servidor que ejecuta IIS/AAR
Luego, las reglas de reescritura de URL de salida están configuradas para redirigir a uno de varios servidores back-end dependiendo del nombre de host.
Funciona un poco, pero siempre devuelve el sitio predeterminado de los servidores back-end (no el asignado a un nombre de host), por lo que parece que el nombre de host (HTTP_HOST) no se está pasando de el servidor proxy al servidor back-end.
(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 del host)
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://192.168.1.99/{R:1}" />
</rule>
</rules>
</rewrite>
Han intentado poner variables sever 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 alas siempre devuelve el enlace predeterminado - ¿ alguna idea?
2 answers
Este post tiene la respuesta - Modificando encabezados con Enrutamiento de solicitudes de aplicación IIS7
Necesita habilitar preserveHostHeader-no se puede ver cómo lo hace en la interfaz de usuario, pero esto funciona
Ejecute esto desde la línea de comandos para actualizar Machine/webroot/apphost config
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:40
Mi conjetura sería que su servidor no le permite cambiar la variable del servidor HTTP_HOST
cuando reescribe la URL.
En el nivel del sitio web donde se aplica la reescritura de URL:
Luego haga clic en el enlace Add...
en la pestaña derecha y agregue su variable HTTP_HOST
:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-12 22:09:16