Как разместить несколько физических веб-серверов за одним IP-адресом?

13

Я использую несколько веб-серверов в моем доме, каждый из которых подключен к моему маршрутизатору.

Сервер A Сервер B Сервер C

В настоящее время я могу использовать только один сервер, поскольку мой порт 80 (xx.xxx.xx.xx) 80 указывает на сервер A. Однако некоторые домены указывают на сервер A, некоторые на B и т. Д.

С моим одним IP-адресом, как я могу указать на каждый сервер? Например, все мои записи A (host) указывают только на мой IP-адрес.

Извините, если я звучу запутанно. Дайте мне знать, если мне не ясно.

Каждый сервер работает под управлением Ubuntu Server 12.04.02 и использует Apache (если это помогает). Мой роутер тоже Netgear, а мой провайдер - Time Warner Cable.

Стивен Чофи
источник
@kobaltz Не совсем так, поскольку это разные серверы, а не виртуальные хосты. Это 3 физических сервера
Стивен Чоффи
Мой ответ на этот вопрос остается тем же, когда у вас будет обратный прокси-сервер, который будет первым, после чего будет запущен маршрутизатор. Оттуда он будет передавать данные на один из трех серверов. Вы даже можете сделать это изнутри маршрутизатора, если вы используете что-то вроде OpenWRT.
Кобальц
В настоящее время я использую объяснение в моем ответе на другой вопрос. У меня есть сервер виртуальной машины, который имеет виртуальную машину для шлюза, а затем 20 узлов. В зависимости от субдомена и имени домена, он отправляет данные на один из 20 серверов.
Кобальц

Ответы:

9

Веб-сайты будут распознаваться через Host:заголовок, отправленный из браузера. Но так как ваш маршрутизатор не способен к разметке HTTP, используемой виртуальным хостингом, вам нужно будет выбрать один сервер в качестве «конечной точки» (и сообщить вашему маршрутизатору этот адрес как Virtual Server / DMZ).

Затем вы либо настраиваете этот компьютер в качестве веб-сервера для своих доменов и прокси для других (например, с помощью обратного прокси-сервера Apache ), либо (возможно, лучше) устанавливаете прокси на этом одном компьютере и используете его для мультиплексирования запросов к другим серверам. , Некоторые домены могут быть даже размещены на одном компьютере. nginxподходит для такого рода работы, но вы также можете использовать другое программное обеспечение (например pound).

Я думаю, что второе решение лучше, потому что вам вообще не нужно манипулировать конфигурациями веб-серверов: один прокси-сервер выполняет прокси-сервер, а несколько веб-серверов выполняют веб-обслуживание. Если вам нужно добавить серверы или переместить виртуальные хосты, эту архитектуру проще поддерживать.

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

Добавленная задержка из-за того, что запрос декодируется дважды (один раз прокси, один раз его предполагаемым получателем), незначителен и более чем компенсируется ускорением, обеспечиваемым самим прокси.

LSerni
источник
Если я создаю гостевую виртуальную машину в качестве прокси-сервера, какую операционную систему лучше использовать, и какие аппаратные ресурсы мне следует выделить? Вы упоминаете установку этого прокси на DMZ ... это необходимо? Разве я не могу портировать только те порты, которые хочу открыть, чтобы все еще был некоторый уровень защиты через брандмауэр маршрутизатора и NAT?
Reece
Ресурсы для прокси не являются проблемой, они будут сильно связаны с сетью. Что касается ОС, я бы сказал, Unix, Linux или BSD, в зависимости от того, что вам наиболее удобно. Есть также готовые устройства для нескольких решений по виртуализации (vmware, virtualbox, xen и т. Д.). И да, вы определенно можете перенаправлять только те порты, которые вам нужны.
LSerni