2009-12-03 3 views
14

Я использую запрос приложений IIS7 Маршрутизация перед Tomcat в качестве замены для перенаправления ISAPI. Основная функция обратного прокси работает хорошо, но у меня недостаточно информации в заголовках окончательных запросов. Мое приложение существует в нескольких поддоменах: customerone.ourservice.com, customertwo.ourservice.com и т. Д. Каждый субдомен запускает одно и то же приложение, но с другой графикой брендинга.Изменение заголовков с использованием запроса IIS7 Маршрутизация

Приложение в настоящее время рассматривает заголовок хоста, чтобы указать, какой брендинг отображать. Когда я использую обратный прокси-сервер IIS7, эта информация теряется. Мои заголовки сейчас:

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 

Есть ли способ, что я могу вставить исходный заголовок узла в заголовки запросов, передаваемых по обратному прокси-сервер?

+0

Я не сейчас, но я заметил, что в нашей среде наших заголовки выгружены на IIS7 для приложения/XHTML + XML без причины. – furtive

ответ

32

Application Request Routing имеет возможность сохранить исходный заголовок узла: preserveHostHeader. Эта опция по умолчанию - false. Вы можете включить его с помощью:

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

Спасибо. Я больше не могу это проверить (приложение было снято с производства несколько месяцев назад), но ваш ответ выглядит как правильный способ сделать это, и я принимаю его. –

+0

+1 - У меня была аналогичная проблема с размещенным экземпляром YouTrack, и это решило проблему с недействительной регистрацией OpenID. –

+3

Кто-нибудь знает, почему это работает только в 'ApplicationHost.config', а не в каждом отдельном' web.config' ?? –

1

Вы можете установить флаг preserveHostHeader вручную.

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

</system.webServer> 

В графическом интерфейсе конфигурации IIS вы можете найти это значение при system.webServer/proxy.

enter image description here

+0

Я обновил файл в этом месте за этот ответ, и он не сработал. Затем я выполнил эту команду: C: \ Windows \ System32 \ inetsrv> appcmd.exe set config -section: system.webServer/prox y/preserveHostHeader: «True»/commit: apphost Который в конечном итоге устранил проблему. Это дает хорошую обратную связь при запуске: Применимые изменения конфигурации в разделе «system.webServer/proxy» для «MACHINE/W EBROOT/APPHOST» на пути фиксации конфигурации «MACHINE/WEBROOT/APPHOST» – BraveNewMath