Назад | Перейти на главную страницу

Как я могу настроить два виртуальных веб-сервера Ubuntu и разделить веб-трафик между ними в зависимости от входящего домена?

У меня есть сервер для монтажа в стойку (HOSTA, работающий под управлением ubuntu 12.04), на котором есть две виртуализированные установки ubuntu (VIRTA и VIRTB, через vboxheadless, один - 12.04, а другой - 14.04). У одного есть новейшие версии apache / mysql / php, а у другого есть более старые версии для некоторых устаревших веб-приложений. Все три установки ubuntu имеют свои собственные локальные IP-адреса. У меня есть единственный внешний IP-адрес, который в настоящее время сопоставлен с example1.ddns.me (через no-ip). В настоящее время веб-трафик перенаправляется на VIRTA через мой маршрутизатор Verizon. Теперь мне нужно запустить этот устаревший сервер, чтобы его увидел весь мир, и мне не разрешено использовать другой порт, кроме 80, иначе я бы перенаправил порт 8080 на VIRTB и покончил с этим.

Я хочу, чтобы весь входящий веб-трафик шел на HOSTA и настроил обратное проксирование (я думаю?), Чтобы разделить example1.ddns.me на VIRTA и example2.ddns.me на VIRTB. Так работает обратное проксирование? Может кто подскажет прохождение?

Хорошо, вот решение, к которому я пришел, и которое отлично работает. Для подробного ответа я кратко напомню некоторые подробности.

Серверы:

ServerA - ubuntu 12.04 - внутренний статический IP-адрес 192.168.1.230

ServerB - ubuntu 14.04 - внутренний статический IP-адрес 192.168.1.235

У меня есть веб-сайт на каждом сервере, один на 12.04 (со старой установкой php), на который я хочу указать exampleA.com, и мой новый веб-сайт на 14.04 с новым php с exampleB.com. Оба сервера работают под управлением Apache2.

У меня есть один внешний IP-адрес, на который указывают оба домена и все поддомены. Моя переадресация портов на моем маршрутизаторе передает весь входящий трафик на порт 80 на ServerA.

Обычно все ваши веб-файлы находятся в / var / www /, который устанавливается вашим журналом конфигурации apache2 в / etc / apache2 / sites-available / default (в ubuntu14.04 этот файл / etc / apache2 / sites-available / 000-по умолчанию).

Я оставил блок VirtualHost по умолчанию, чтобы исходный сайт оставался работоспособным без изменений:

<VirtualHost *:80>
  DocumentRoot /var/www

</VirtualHost>

В этом блоке могут быть дополнительные конфигурации, такие как электронная почта веб-мастера и конфигурации для каждого каталога для .htaccess и т. Д., Но основа состоит в том, что все, что приходит с порта 80, указывает на вашу папку / var / www и обслуживается оттуда. .

Ниже этого блока VirtualHost я добавил новый блок VirtualHost, как показано ниже:

<VirtualHost *:80>
  ServerName exampleb.com

  ProxyPreserveHost on
  ProxyPass / http://192.168.1.235
  ProxyPassReverse / http://192.168.1.235
</VirtualHost>

Это разрешает любой трафик, поступающий на порт 80 (на адрес 192.168.1.230). с exampleb.com чтобы затем перенаправляться на 192.168.1.235 и обслуживаться с помощью apache на этой машине из-за прокси-части. То, что там происходит, зависит от конфигурации apache этой машины.

Эта настройка потребует включения прокси в apache2, что можно сделать с помощью этой команды в ubuntu:

a2enmod proxy

Оказалось, что очень простая компоновка идеально подходит для того, что я задумал. Прошу прощения, если это объяснение не совсем ясное, обратная связь приветствуется для улучшения или уточнения.

Вы можете использовать HAproxy для отправки запросов на разные серверы в зависимости от имени хоста с помощью ACL:

https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#acl

Пример:

acl is_host1 hdr(host) -i host1.example.com
acl is_host2 hdr(host) -i host2.example.com

use backend host1_backend if is_host1
use backend host2_backend if is_host2

Это всего лишь фрагмент, а не полная рабочая конфигурация, но он должен направить вас на верный путь.

Взгляните на эту документацию по apache: mod_proxy

Возможно, вам будет полезна первая тема «Прямые прокси и обратные прокси / шлюзы» и ее примеры (возможно, вам придется немного покопаться в примерах, чтобы заставить ее работать)

Иногда вам придется добавить некоторые правила перезаписи URL-адресов, но это поможет

В любом случае, я буду следовать рекомендации Джима Г. в комментарии.