Я пытаюсь сделать что-то довольно простое, но все равно не могу заставить это работать.
Допустим, у меня в локальной сети 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 будет работать для того, что вы пытаетесь сделать. Было бы полезно узнать, почему вы хотите использовать два таких сервера.