IIS AAR - URL-адрес Rewrite для обратного прокси-сервера - как отправить HTTP_HOST
Попытка использовать AAR в качестве обратного прокси-сервера перед несколькими серверами IIS на задней панели.
-
Один общедоступный IP-адрес, назначенный серверу с IIS/AAR
-
Затем правила пересылки исходящего URL настраиваются для перенаправления на один из
несколько серверных серверов в зависимости от имени хоста.
Работает несколько, но всегда возвращает серверу по умолчанию для конечных серверов (а не тот, который сопоставлен с именем хоста), поэтому похоже, что имя хоста (HTTP_HOST) не передается с прокси-сервера на задний сервер.
(Я проверил обход обратного прокси, отредактировав хосты, а сервер back-end вернет правильный сайт, привязанный к заголовку хоста)
Это пример правила (192.168.0.99 - это внутренний сервер, site.myco.com - имя хоста)
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://192.168.1.99/{R:1}" />
</rule>
</rules>
</rewrite>
Попробовали переставить переменные sever, поэтому
<!-- 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>
Но увы всегда возвращает привязку по умолчанию - любые идеи?
Ответы
Ответ 1
В этом сообщении есть ответ - Изменение заголовков с помощью маршрутизации запросов приложений IIS7
Необходимо включить preserveHostHeader - не можете видеть, как вы это делаете в пользовательском интерфейсе, но это работает
Запустите это из командной строки, чтобы обновить конфигурацию Machine/webroot/apphost
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost
Ответ 2
Я предполагаю, что ваш сервер не позволит вам изменить переменную сервера HTTP_HOST
при перезаписи URL-адреса.
На уровне веб-сайта, на котором применяется переписывание URL:
![inetmgr]()
Затем нажмите ссылку Add...
на правой вкладке и добавьте переменную HTTP_HOST
:
![add HTTP_POST]()