2013-02-12 16 views
21

Próba użycia AAR jako odwrotnego proxy przed kilkoma serwerami IIS zaplecza.IIS AAR - URL Rewrite for reverse proxy - jak wysłać HTTP_HOST

  • jeden publiczny adres IP przypisany do serwera z systemem IIS/AAR

  • Następnie wychodzące reguły przepisywania URL są ustawione przekierowanie do jednej z tylnych kilku serwerów końcowych w zależności od hosta.

Works nieco, ale zawsze wraca tylną serwery klasy domyślnej witryny (a nie jeden odwzorowany na nazwę hosta), więc wygląda na to, nazwę hosta (HTTP_HOST) nie jest uzyskiwanie przekazywane z serwera proxy do tylnego końca serwer.

(I zweryfikowaniu pominięciem reverse proxy edytując gospodarzami i serwera koniec z powrotem wraca prawidłową stronę związaną z nagłówka hosta)

To jest przykład z reguły (192.168.0.99 jest serwer wewnętrzny, site.myco.com jest nazwa hosta)

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

próbowałem oddanie sever zmienne tak

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

Bu t alas zawsze zwraca domyślne powiązanie - jakieś pomysły?

Odpowiedz

27

Ten post ma odpowiedź - Modifying headers with IIS7 Application Request Routing

należy włączyć preserveHostHeader - nie można zobaczyć, jak to zrobić w interfejsie użytkownika, ale to działa

Uruchom ten z wiersza poleceń do aktualizacji Maszyna/Webroot/apphost config

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

Zdecydowanie wcześniej nie wiedziałem o tym! – cheesemacfly

+0

Znalazłem to w interfejsie dla IIS 8.5: Serwer (lub witryna)> Edytor konfiguracji> system.webServer> Proxy. Jednak skopiowanie powyższego do polecenia uruchomienia lub okna wiersza poleceń jest łatwiejsze/szybsze. – ahwm

2

Domyślam się, że twój serwer nie pozwala na zmianę zmiennej serwera HTTP_HOST podczas przepisywania adresu URL.

Na poziomie tej stronie, gdzie przykłada się przepisać URL:

inetmgr

Następnie kliknij link Add... na prawą kartę i dodać HTTP_HOST zmiennej:

add HTTP_POST

+1

nie jest zły, ale to już zgadywać done - dostajesz błąd 500.500, jeśli nie jest na miejscu, mówiąc ci. – Ryan

Powiązane problemy