Вопрос: Несколько веб-серверов за одним общедоступным IP-адресом


Долгое время читатель впервые плакат (он он). Итак, вот моя дилемма. У меня есть 3 сайта дома для некоторых друзей, ничего больших, все просто сайты Wordpress. Запуск их в VMWare Workstation. Получил тонну барана, чтобы сэкономить, и все это беспорядок, поэтому не беспокойтесь о ресурсном фронте. Поскольку я строю сайт №2, я понимаю: «CRAP! ... Как я буду маршрутизировать их в маршрутизаторе?» Теперь, прежде чем некоторые из вас скажут «vhosts», я разделяю сайты на разных виртуальных машинах. 1 из 3 - не очень важный сайт, но в случае чего-то, я бы предпочел, чтобы все не спустились одновременно. Итак ...

У меня есть общий маршрутизатор Linksys (с ужасным новым Smart Wifi). Мне нужно изменить прошивку на хорошие вещи, но это еще один день. Таким образом, один общедоступный IP-адрес, 3 виртуальных машины с уникальными внутренними IP-адресами, т.е. 192..1 / 2/3. Маршрутизатор не позволяет перенаправлять порт на несколько IP-адресов, используя один и тот же порт (80).

Если вам удастся многое сделать, я укушу пулю и переместил бы их в одну и ту же виртуальную машину, а также на другие сайты, но мои мысли должны были использовать ДРУГОЙ VM. Виртуальный маршрутизатор. Я могу подумать о некоторых виртуальных машинах маршрутизатора / брандмауэра, таких как pfSense, m0n0wall, но я просто ищу что-то простое и легкое в работе, но я предполагаю, что ему нужно будет действовать немного как vhost, взяв порт 80 запрос от маршрутизатора, а затем распределение трафика на 3 виртуальных машины, удерживающих веб-серверы, используя заголовки хоста (я думаю).

У кого-нибудь есть предложение, лучший метод и т. Д.? Многое было оценено заранее, и столько, сколько положить их под одну крышу VM, это мгновенно разрешило бы, в моем случае, разделение своего рода козырей.

Но очень открыты для мыслей. Приветствия.


2
2017-12-11 08:42


Источник


Если вам небезразлично время работы, почему бы не арендовать vps и не размещать там серверы? - tombull89
Должно было быть конкретным с точки зрения просто говорить о виртуальной маршрутизации.
Вопрос в том, что каждый сервер размещает собственный сайт или каждый сервер хранит копию всех трех сайтов? Вы хотите, чтобы устройство балансировки нагрузки использовало его, но использовало его дома? Я не знаю, с чего начать. - tombull89
У каждого есть свой сайт. Хотя у меня просто ощущение, что виртуальный роутер «может» сделать трюк. Как и ваш ответ, просто не знаете, с чего начать. Начинать чувствовать, что разделение их просто слишком много хлопот.
Настройте сервер apache с mod_proxy и прокси-сервером каждого из сайтов на свой собственный сервер. Маршрутизатору необходимо только переместить порт на один сервер Apache. - Jenny D


Ответы:


Настройте еще один vm как прокси-сервер, который будет направлять трафик на соответствующий vm с использованием имени домена.


3
2017-12-11 09:49



вы можете установить nginx в качестве прокси-сервера на одну из виртуальных машин, которые у вас есть, и использовать его как WebProxy. Вот документы для модуля прокси-сервера Nginx HTTP: nginx.org/en/docs/http/ngx_http_proxy_module.html Другой HOWTO: cyberciti.biz/tips/using-nginx-as-reverse-proxy.html
Хотя это, наверное, лучший способ сделать это. Это не ответ, если вы не указали, как применить эту идею и ссылки на документацию / howtos. - mveroone


Я пробовал различные решения, и успех у меня есть, используя Apache2. Он поставляется с функцией виртуального хостинга.

Вам нужно будет сделать небольшую «проводку» Apache2, но я включу свой конфиг в качестве руководства для вас. Как это работает: apache2 работает с функцией «Имя на основе домена», где он запускает столько сайтов, сколько захочу, но на одном общедоступном IP-адресе. [Я разработчик, который объясняет, почему эти многие сайты].

   $ sudo apt-get install -y apache2 apache2-dev apache2-threaded-dev

Проводка apache2.conf путем добавления этих трех строк в конец conf

   include httpd.conf
   <VirtualHost *>
   </VirtualHost>

Настройте свой httpd.conf с помощью этого руководства; отрегулируйте соответственно вашему делу. По умолчанию в качестве новой установки вы не увидите httpd.conf, но Apache2 ответит, если он найдет httpd.conf, сидящий в каталоге / etc / apache2.

    $ sudo touch /etc/apache2/httpd.conf

и добавьте это в httpd.conf. Большой упор делается на то, чтобы уйти : 80 нетронутых. Когда ты видишь '## ИЗМЕНИТЬ ЭТО *


2
2017-12-11 09:51



Просто чтобы подтвердить, с таким подходом он будет размещать все сайты на одном vm, правильно? Не очень важно и на самом деле, вероятно, лучше с точки зрения распределения ресурсов. - MDMoore313
Подтверждено, MDMoore313. Причина: Apache2 уже имеет технологию виртуального хостинга и может управлять несколькими сайтами с одной машины. - Faron


Маршрутизатор не позволяет перенаправлять порт на несколько IP-адресов, используя один и тот же порт (80).

Между прочим, это невозможно со стандартным TCP / IP. Вам нужна программа, то есть прокси, принимающая запросы на порт, просмотр запросов, а затем запросы на шунтирование.


Apache и другие веб-серверы имеют функцию «обратного прокси», которая может использоваться для «разделения» вашего входящего трафика. Обратный прокси говорит Apache, что запрашивает определенный веб-путь, т. Е. «Yourdomain / directory1» должен быть передан другому веб-серверу, а ответы от этого веб-сервера возвращены исходному клиенту.

Однако обратите внимание, что если у вас есть приложения, запущенные на этом веб-сервере (PHP и т. Д.), Им может потребоваться изменить настройки, поскольку их внешний URL будет отличаться. Возможно, вам придется сказать PHP-приложению, что он живет в «yourdomain / directory1» вместо «yourdomain», чтобы он мог корректно генерировать ссылки. Можно сказать, что Apache переписывает трафик с серверного сервера, прежде чем он возвращает его клиенту, но это сложно, и вы хотите избежать его, если это возможно. Приложения, которые генерируют ссылки с Javascript, могут быть особенно проблематичными, поэтому не все веб-приложения легко «обратимы».

Поэтому установите Apache на четвертую виртуальную машину «front end» - переместите входящий TCP 80 на эту виртуальную машину. Вам также необходимо убедиться, что эта виртуальная машина может подключиться к вашим другим виртуальным машинам в вашей «виртуальной сети». Затем на вашей виртуальной виртуальной машине вы можете настроить отдельный обратный прокси для каждого веб-сайта.

Вот это соответствующие настройки конфигурации Apache, используя ProxyPass а также ProxyPassReverse директивы.

Вы также можете разработать и реализовать кэширование, что поможет повысить производительность.


1
2017-12-11 15:50