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

Как запустить 2 веб-сервера с 2 доменами на 1 статическом IP

Я создал 2 виртуальные машины на одной машине для двух веб-серверов. На одном сервере будет работать служба IIS, а на втором - службы Apache.

Как мне настроить мой сервер / маршрутизатор так, чтобы 2 разных домена работали на разных серверах с одним статическим IP-адресом.

Если вы хотите разместить свой веб-сервер на стандартных портах HTTP (80) или HTTPS (443), я думаю, что у вас не может быть ответа двух разных машин в зависимости исключительно от имени домена.

Дело в том, что когда вы заходите на какой-либо сайт, вы не получаете доступ к нему через доменное имя - вы просто используете DNS для сопоставления этого доменного имени с IP. Причина, по которой вы можете разместить несколько сайтов на одном IP, - это заголовок Host - см. Раздел 14.23 Host RFC 2616:

Это работает следующим образом. Допустим, у нас есть два домена a.example.com и b.example.com, указывающие на один и тот же IP-адрес, скажем, 10.0.0.10. Клиент, обычно использующий какой-либо веб-браузер, запрашивает у DNS IP-адрес a.example.com. DNS отвечает 10.0.0.10. Затем клиент отправляет что-то вроде:

Host: a.example.com

Когда ваш веб-сервер получает это, он может определить, что вам действительно нужен a.example.com, а не b.example.com (или, возможно, другие виртуальные хосты на этом веб-сервере).

Однако в вашем примере у вас нет одного сервера - у вас есть два сервера. Маршрутизатору потребуется маршрутизировать к одному из них исключительно на основе IP-адреса - заголовок Host обрабатывается на уровне приложения, а маршрутизация выполняется на уровне IP (см. Модель TCP / IP). Хотя некоторые маршрутизаторы принимают некоторые решения на основе уровня приложения, я не думаю, что кто-то может так глубоко проникнуть в пакет, чтобы проверить заголовки HTTP и маршрут на основе этого результата.

Что вы можете сделать:

  • Сделайте одну из двух виртуальных машин по умолчанию, а затем прокси-сервером на другую
  • Сделайте третью виртуальную машину, которая будет прокси для обеих текущих виртуальных машин.

См. Например это для получения дополнительной информации о виртуальных хостах:

См. Например эти о настройке обратного прокси:

Вот справочная документация по модулям, которые можно использовать для создания обратного прокси:

Надеюсь это поможет.