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


14

У мене вдома працює декілька веб-серверів, кожен з яких підключений до мого маршрутизатора.

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

Наразі я можу використовувати лише один сервер, оскільки мій порт 80 IP (xx.xxx.xx.xx) спрямований на сервер А. Однак деякі домени вказують на сервер A, деякі на B тощо.

Як я можу вказати кожен сервер зі своєю IP-адресою? Наприклад, мій A (хост) записує все, що вказує лише на мою IP-адресу.

Вибачте, якщо я звучу заплутано. Дайте мені знати, якщо мені не буде зрозуміло.

На кожному сервері працює Ubuntu Server 12.04.02 і використовується Apache (якщо це допомагає). Мій маршрутизатор також Netgear, а мій провайдер - Time Warner Cable.



@kobaltz Не зовсім так, оскільки це різні сервери, а не віртуальні хости. Це 3 фізичні сервери
Stephen Cioffi

Моя відповідь у питанні все одно те саме, де у вас був би зворотний проксі-сервер, який би був тим, що вперше потрапляє після маршрутизатора. Звідти він посилатиме дані на один із трьох серверів. Ви навіть можете це зробити з маршрутизатора, якщо ви використовуєте щось на кшталт OpenWRT.
кобальц

На даний момент я використовую пояснення у своїй відповіді на інше питання. У мене є сервер Virtual Machine, який мав VM для шлюзу, а потім 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

Додана затримка, обумовлена ​​тим, що запит декодується двічі (один раз проксі-сервером, один раз його призначеним одержувачем), незначна, і більш ніж компенсується прискоренням, яке надає сам проксі.


Якщо я створю гость VM як проксі, яка найкраща ОС для використання та які апаратні ресурси слід виділити? Ви згадуєте про встановлення цього проксі на DMZ ... це потрібно? Чи не можу я переслати лише ті порти, які я хочу відкрити, щоб залишався якийсь шар захисту через брандмауер маршрутизатора та NAT?
Рис

Ресурси для проксі - це не проблема, вона буде сильно пов'язана з мережею. Що стосується ОС, я б сказала, що Unix точно, Linux або BSD залежно від того, що вам найбільше комфортно. Також є готові пристрої для декількох рішень для віртуалізації (vmware, virtualbox, xen тощо). І так, ви точно можете перенести пересилання лише тих портів, які вам потрібні.
LSerni
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.