IIS AAR-URL Rewrite for reverse proxy - comment envoyer un hôte HTTP

essaie d'utiliser AAR comme un mandataire inversé devant plusieurs serveurs IIS.

  • une adresse ip publique attribuée au serveur exécutant IIS /AAR

  • les règles de réécriture d'URL sortantes sont configurées pour rediriger vers l'une des plusieurs serveurs d'arrière-plan selon le nom d'hôte.

fonctionne un peu, mais retourne toujours le site par défaut des serveurs back end (pas le nom d'hôte (HTTP_HOST) ne passe donc pas du serveur proxy au serveur d'arrière-plan.

(j'ai vérifié le contournement du proxy inverse en éditant des hosts et le serveur de back end renvoie le bon site lié à l'en-tête de l'hôte)

ceci est un exemple de la règle (192.168.0.99 est le serveur interne, site.myco.com is the hostname)

    <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 des variables sever ainsi

    <!-- 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 reliure par défaut - des idées?

23
demandé sur abatishchev 2013-02-13 01:16:35

2 réponses

Ce post a la réponse - Modifier les en-têtes avec IIS7 Demande d'Application de Routage

Besoin d'activer preserveHostHeader - ne peut pas voir comment vous le faire dans l'INTERFACE utilisateur, mais cela fonctionne

exécutez ceci de la ligne de commande à la mise à jour Machine/webroot/apphost config

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
33
répondu Ryan 2017-05-23 12:17:40

à mon avis, votre serveur ne vous permet pas de changer la variable HTTP_HOST lorsque vous réécrivez l'URL.

au niveau du site Web où la réécriture de L'URL est appliquée:

inetmgr

puis cliquez sur le lien Add... sur l'onglet droit et ajoutez votre variable HTTP_HOST :

add HTTP_POST

2
répondu cheesemacfly 2013-02-12 22:09:16