Подтвердить что ты не робот

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>

Но увы всегда возвращает привязку по умолчанию - любые идеи?

4b9b3361

Ответ 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