web-dev-qa-db-fra.com

IIS Arr - réécriture URL pour proxy inverse - Comment envoyer http_host

Essayer d'utiliser AAR comme proxy inverse devant plusieurs dossiers IIS serveurs.

  • Une adresse IP publique attribuée au serveur exécutant IIS/AAR

  • Ensuite, les règles de réécriture de l'URL sortante sont configurées pour rediriger vers l'un des serveurs arrière de l'arrière-plan en fonction du nom d'hôte.

Fonctionne un peu, mais retourne toujours le site des serveurs arrière-fin du site par défaut (pas celui mappé sur un nom d'hôte), il semble donc que le nom d'hôte (http_host) ne soit pas transmis à partir du serveur proxy sur le serveur arrière.

([J'ai vérifié vérifié en contournant le proxy inverse par l'édition des hôtes et le serveur d'extrémité arrière renvoie le site correct lié à l'en-tête d'hôte)

Ceci est un exemple de la règle (192.168.0.99 est le serveur interne, site.myco.com est le nom d'hôte)

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

Ont essayé de mettre de couper les variables

    <!-- 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>

Mais hélas renvoie toujours la liaison par défaut - des idées?

27
Ryan

Cet article a la réponse - Modification des en-têtes avec routage de demande d'application IIS7

Besoin d'activer la preservehosther - Impossible de voir comment vous faites cela dans l'interface utilisateur, mais cela fonctionne

Exécutez ceci à partir de la ligne de commande pour mettre à jour la machine/webroot/apphost config

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

Je suppose que votre serveur ne vous permet pas de modifier la variable du serveur HTTP_Host Lorsque vous réécrivez l'URL.

Au niveau du site Web où la réécriture URL est appliquée:

inetmgr

Puis cliquez sur le Add... Lien sur l'onglet DROIT et ajoutez votre HTTP_Host variable:

add HTTP_POST

2
cheesemacfly