2009-12-03 14 views
14

Używam routingu żądań aplikacji IIS7 przed Tomcat jako zamiennika przekierowania ISAPI. Podstawowa funkcja odwrotnego proxy działa dobrze, ale nie mam wystarczających informacji w nagłówkach ostatnich żądań. Moja aplikacja istnieje w kilku subdomenach: customerone.ourservice.com, customertwo.ourservice.com itd. Każda poddomena uruchamia tę samą aplikację, ale z inną grafiką marki.Modyfikowanie nagłówków z usługami IIS7 Routing żądań aplikacji

Aplikacja obecnie przegląda nagłówek hosta, aby określić, które marki mają być wyświetlane. Kiedy używam odwrotnego proxy IIS7, informacje te są tracone. Nagłówki są teraz:

accept = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
accept-charset = ISO-8859-1,utf-8;q=0.7,*;q=0.7 
accept-encoding = gzip,deflate 
accept-language = en-gb,en;q=0.7,en-us;q=0.3 
cookie = JSESSIONID=...... 
host = 127.0.0.1:8080 
max-forwards = 10 
user-agent = Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.04 (jaunty) Firefox/3.0.15 
x-original-url =/
x-forwarded-for = [iis7ip]:47567 
x-arr-log-id = affbf81c-a5cf-4212-a43b-901cd9adcee6 
connection = Keep-Alive 

Czy jest jakiś sposób mogę wstawić oryginalny nagłówek hosta do nagłówków żądań przekazywanych przez serwer proxy odwrotnej?

+0

nie mam teraz, ale zauważyłem, że w naszym środowisku nasze nagłówki są zamieniane przez IIS7 dla application/xhtml + xml bez powodu. – furtive

Odpowiedz

32

Żądanie aplikacji Routing ma opcję zachowania oryginalnego nagłówka hosta: preserveHostHeader. Ta opcja ma domyślnie wartość false. Możesz włączyć to za pomocą:

"C:\Windows\System32\inetsrv\appcmd.exe" set config -section:system.webServer/proxy /preserveHostHeader:"True" /commit:apphost 
+0

Dzięki. Nie jestem już w stanie tego przetestować (aplikacja została wycofana kilka miesięcy temu), ale twoja odpowiedź wygląda jak poprawny sposób na zrobienie tego i akceptuję to. –

+0

+1 - Miałem podobny problem z hostowaną instancją YouTrack i to rozwiązało problem z nieudanym logowaniem się przez OpenID. –

+3

Ktoś wie, dlaczego działa to tylko w 'ApplicationHost.config', a nie w każdym' web.config' ?? –

1

Możesz ustawić flagę preserveHostHeader ręcznie.

<proxy enabled="true" preserveHostHeader="true" /> 

</system.webServer> 

w GUI konfiguracji IIS można znaleźć tę wartość pod system.webServer/proxy.

enter image description here

+0

Zaktualizowałem plik w tej lokalizacji dla tej odpowiedzi i nie zadziałało. Następnie uruchomiłem to polecenie C: \ Windows \ System32 \ inetsrv> appcmd.exe set config -section: system.webServer/prox y/preserveHostHeader: "True"/commit: apphost Co skończyło się naprawieniem problemu. Daje dobrą informację zwrotną po uruchomieniu: Zastosowane zmiany konfiguracji do sekcji "system.webServer/proxy" dla "MACHINE/W EBROOT/APPHOST" na ścieżce zatwierdzania konfiguracji "MACHINE/WEBROOT/APPHOST" – BraveNewMath