У меня есть сервер для монтажа в стойку (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-адресов, но это поможет
В любом случае, я буду следовать рекомендации Джима Г. в комментарии.