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?

Author: abatishchev, 2013-02-13

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
 33
Author: Ryan,
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:

inetmgr

Luego haga clic en el enlace Add... en la pestaña derecha y agregue su variable HTTP_HOST:

añadir HTTP_POST

 2
Author: cheesemacfly,
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