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

Определить, на какой сервер в среде виртуальной машины пересылать запрос на основе заголовка (ов) хоста на одном сетевом адаптере

Как гласит заголовок вопроса: я пытаюсь выяснить, как определить, на какой веб-сервер передавать сетевой трафик, на основе заголовка хоста указанного запроса. Я работаю с одним сетевым адаптером на хост-сервере, которому принадлежит вся моя гостевая ОС. Эта установка вызвана как необходимостью (мне доступно ограниченное оборудование), так и моим желанием изучить технологию, чтобы я мог максимально использовать свои компоненты.

Кто-нибудь знает, как я могу это сделать в той же среде ESXi?

Создайте новую виртуальную машину в среде ESXi, на которой работает nginx, и используйте модуль прокси для направления вашего трафика:

server {
    listen       80;
    server_name  hostname1 hostname2 hostname3 ... hostnameN;
    if ($http_host = hostname1) {
        proxy_pass http://192.168.0.1;
    }
    if ($http_host = hostname2) {
        proxy_pass http://192.168.0.2;
    }
    if ($http_host = hostname3) {
        proxy_pass http://192.168.0.3;
    }
    #...
    if ($http_host = hostnameN) {
        proxy_pass http://192.168.0.N;
    }
}

Соус: Модуль ngx_http_proxy_module

Запрос на веб-сайт разрешается на IP-адрес.

Затем трафик направляется в вашу сеть.

Ваш брандмауэр / маршрутизатор преобразует общедоступный IP-адрес в частный IP-адрес (в зависимости от конфигурации трансляции IP-адресов).

Затем ваш брандмауэр / маршрутизатор выполняет ARP для MAC-адреса рассматриваемого IP-адреса.

Соответствующая виртуальная машина отвечает на запрос ARP.

Ваш брандмауэр / маршрутизатор отправляет трафик на MAC-адрес.

Ваш коммутатор перенаправляет трафик на соответствующий порт коммутатора (на основе его таблицы MAC-адресов).

Трафик проходит через pNIC хоста ESXi (без искажений).

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