У меня конфигурация сети, как показано ниже. А Windows Server 2012 R2
ящик с публичным IP, с несколькими CentOS 7
за ним стоят веб-серверы. Каждый CentOS
box - это веб-сервер для нескольких сайтов. Ящики CentOS работают Apache 2.4
и PHP 5.5
.
Записи DNS для всех сайтов указывают на общедоступный IP-адрес Win Server
(1.2.3.4
).
У меня вопрос: Как мне наиболее эффективно обслуживать сайты из CentOS
коробки до конечных пользователей?
Я смотрел на IIS
обратные прокси. Вот мое текущее (супер-неуклюжее) решение:
Win Server
получает запрос на foo.com
com.foo.web1
и IIS
включает $_SERVER
переменная, чтобы передать PHP правильный URL (foo.com
).Win Server
файл hosts говорит com.foo.web1
переходит на IP Web1
(192.168.1.2
)Web1
есть vhost для com.foo.web1
который затем служит всем для foo.com
.Это работает, но кажется ужасным взломом. В идеале я бы не хотел переписывать URL-адреса. я просто хочу сказать foo.com
? Отправьте этот запрос на 192.168.1.2
. thing.com
? отправить это в 192.168.1.3
. Для меня это звучит как DNS, но, очевидно, я не могу просто сказать пользователю перейти на какой-то внутренний IP-адрес. Может мне вообще нужен прямой прокси? Я не могу просто переадресовать порт 80
из-за необходимости разделять запросы между несколькими серверами.
Мне кажется, что эта проблема должна была быть решена раньше, но я не могу ее понять. (Я действительно разработчик, а не системный администратор). Помощь будет очень признательна!
Чтобы избавить всех, кто найдет это, от прочтения всех комментариев, я в конечном итоге сбросил Windows Server и использовал Linux с HAProxy. HAProxy может пересылать запросы без повторной записи URL-адресов.
Я еще не нашел хорошего решение для Windows, но я думаю, что это приемлемо:
Перепишите все URL-адреса, добавив порт, поэтому:
Затем на Windows Server:
Это непроверенный.
Я никогда не играл напрямую с функциями IIS ARR, но согласно его документы похоже, что он может сделать то, что вам нужно:
Более эффективно распределять нагрузки между серверами для максимального использования ресурсов
Маршрутизация запросов приложений IIS предлагает администраторам возможность создавать эффективные правила маршрутизации на основе URL-адреса, заголовков HTTP и переменных сервера, чтобы определять наиболее подходящий сервер веб-приложений для каждого запроса. ARR принимает решения о маршрутизации запросов на уровне приложения и может использоваться в сочетании с аппаратными балансировщиками нагрузки или балансировкой сетевой нагрузки Windows в качестве дополнительного уровня контроля над HTTP-запросами. Кроме того, ARR позволяет поставщикам услуг размещения направлять запросы от клиентов на определенные серверы веб-приложений в ферме серверов, создавая связь между клиентом и сервером.
Тем не менее, я не знаю, действительно ли это сработает и даже насколько хорошо. Я бы подумал, возможно, вам лучше потратить время на настройку коробки с Linux и использование HAProxy или какой-либо другой балансировщик нагрузки / обратный прокси Linux (Nginx, Apache с mod_proxy).
Фактически, вы могли бы сделать это и в Windows, используя Apache с mod_proxy.
В любом случае, я точно знаю, что HAProxy может делать именно то, что вы хотите, поскольку это то, для чего он предназначен.
Если у вас установлена маршрутизация запросов приложений (ARR), вы должны увидеть новый элемент «Фермы серверов» в диспетчере IIS.
Вы можете создать ферму серверов с одним сервером 192.168.1.2.
После этого вы можете добавить правило обратного прокси (правило перезаписи) для foo.com и направить его на ферму серверов, созданную на первом шаге.
Видеть http://masteringlync.com/2013/02/12/using-iis-application-request-routing-arr-as-a-tmg-replacement/ для получения дополнительной информации
Вы можете переопределить DNS с помощью файла hosts Windows (c: \ windows \ system32 \ drivers \ etc \ hosts) и добавить строку:
192.168.1.2 foo.com
Теперь ваш Windows-сервер будет связываться с 192.168.1.2 для foo.com, даже если foo.com имеет другой IP-адрес в DNS.
Поэтому, если системы в Интернете связываются с foo.com, они будут искать foo.com с помощью DNS и подключаться к вашему компьютеру с Windows. Теперь, если у вас есть «перенаправление» (терминология Microsoft, я предпочитаю «правило обратного прокси») на foo.com в качестве правила перенаправления, ваше окно Windows будет искать «foo.com» с помощью файла hosts и подключаться к вашему внутреннему серверу.