Назад | Перейти на главную страницу

Обратный прокси и IIS

Я пытаюсь сделать что-то довольно простое, но все равно не могу заставить это работать.

Допустим, у меня в локальной сети 2 виртуальные машины. Эти машины являются веб-серверами для тестирования клиентов. Старый работает под управлением IIS6, а новый - под управлением IIS7.5.

Допустим, у меня есть только один публичный IP-адрес. В исходном сценарии публичный IP-адрес был сопоставлен со старой машиной, и все было в порядке.

Теперь мне нужно «разделить» этот публичный адрес между этими двумя машинами. Что я хочу сделать, так это на основе заголовка хоста «перенаправить» или «переписать» запрос на правильный компьютер.

До сих пор я пытался использовать «новую» машину с IIS7 в качестве обратного прокси, возясь с ARR и Url Rewrite. Я также попробовал «Web Farm Framework» в сочетании с двумя предыдущими модулями.

Краткая история: я не могу заставить его работать: все запросы перенаправляются на «старую» машину, несмотря ни на что.

Длинная история: я старался сделать вещи максимально чистыми. Моя самая чистая попытка заключалась в создании 2 серверных ферм, первая с новой машиной (которая есть сама), а вторая со старой машиной.

В моих правилах перезаписи я ставлю первым правилом, что все, что соответствует www1. *. Mydomain.com, должно быть перенаправлено на новую веб-ферму и прекратить обработку.

Второе правило (которое следует проверять только в случае сбоя первого) гласит, что все, что соответствует * .mydomain.com, перенаправляется на старую веб-ферму.

В этом сценарии все перенаправляется на старую машину. Но если я отключу правило * .mydomain.com, первое действительно будет работать. Как будто второе правило имеет приоритет, если включено, даже если оно находится под другим.

Если у кого-то есть решение, даже совершенно другой подход, пожалуйста. Мне нужно разделить этот общедоступный IP-адрес на этих двух машинах на основе заголовка хоста.

Спасибо.

То, что вы хотите сделать, называется «обратным прокси», и существует множество вариантов. Большинство «балансировщиков нагрузки» - это обратные прокси с некоторыми тонкостями.

Возможны следующие варианты.

  • Настройте новый сервер (например, NginX или HAProxy)

    • Преимущество NginX в том, что он является довольно простой настройкой, с некоторой гибкостью, которая менее хорошо документирована и сложнее настраивается, чем IIS / ARR или HAProxy.

    • HAProxy, вероятно, самое надежное решение, которое я перечисляю, но также имеет большинство параметров конфигурации.

  • Настройте маршрутизацию запросов приложений (ARR) и модули перезаписи URL-адресов для IIS на новом сервере и установите для каждого сайта правило ARR, указывающее на внутренний сайт / сервер.

    • Вам потребуется запись хоста или отдельная привязка IP для каждого сайта на внутреннем сервере.

    • Вам потребуется настроить каждый сайт на общедоступном сервере или сложное правило ARR. Я считаю, что иметь каждый сайт со своим «собственным сайтом» в IIS, как правило, просто.

Подводные камни в такой ситуации заключаются в следующем.

  • Ваш публичный экземпляр прокси / iis вернет ошибку html, если по какой-либо причине не сможет связаться с внутренним сервером. (Если у вас есть службы xml или json на старом сервере, возможно, вы захотите выполнить миграцию).

  • ARR на Server 2008 и 2008 R2 не поддерживает пересылку запросов WebSocket. Я не уверен в 2012 году.


Я знаю, что это старый вопрос, но хотел дать более полный ответ.

Вы на самом деле не указали, что хотите сделать, я предполагаю, что разделить контент на несколько серверов. думаю Ngix будет работать для того, что вы пытаетесь сделать. Было бы полезно узнать, почему вы хотите использовать два таких сервера.