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

Как направлять веб-трафик на несколько виртуальных веб-серверов по одному IP-адресу

У меня есть один сервер ESXi 5, который подключен к одному IP-адресу. На этом сервере я создал 2 виртуальные машины:

  1. Веб-сервер Windows 2008 IIS (a.site.com)
  2. Веб-сервер CentOS Apache (b.site.com)

Я не уверен, как направить трафик на правильную виртуальную машину на основе заголовка хоста?

Вам необходимо установить обратный прокси-сервер на хост-машину (или на одну из виртуальных машин, на которую вы будете маршрутизировать все запросы), который будет внутренне перенаправлять запросы на отдельные виртуальные машины на основе заголовка хоста. Обе виртуальные машины должны быть доступны с хост-машины по определенному IP-адресу или порту.

Что касается обратного прокси - один из вариантов - Apache с mod_proxy, Nginx это легкая альтернатива. Согласно этому сообщению, nginx может быть настроен как обратный прокси, который также работает на основе значения Host.

(Отказ от ответственности: я сам практически этого не делал.)

Я сделал это с IBM HTTP Server (IHS), который я не считаю бесплатным, но моя любимая версия обратного прокси-сервера под GPL - Pound (www.apsis.ch/pound/). Ознакомьтесь с разделом «Виртуальные хосты (в целом)» на этой странице. Я считаю, что это то, что вы ищете. Ниже представлена ​​слегка измененная версия конфигурации с этой страницы ...

 ListenHTTP
            Address 1.2.3.4
            Port    80

            Service
                HeadRequire "Host: .*a.site.com*"

                BackEnd
                    Address 192.168.0.10
                    Port    80
                End
            End

            Service
                HeadRequire "Host: .*b.site.com.*"

                BackEnd
                    Address 192.168.0.10
                    Port    80
                End
            End
        End