Как гласит заголовок вопроса: я пытаюсь выяснить, как определить, на какой веб-сервер передавать сетевой трафик, на основе заголовка хоста указанного запроса. Я работаю с одним сетевым адаптером на хост-сервере, которому принадлежит вся моя гостевая ОС. Эта установка вызвана как необходимостью (мне доступно ограниченное оборудование), так и моим желанием изучить технологию, чтобы я мог максимально использовать свои компоненты.
Кто-нибудь знает, как я могу это сделать в той же среде 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;
}
}
Запрос на веб-сайт разрешается на IP-адрес.
Затем трафик направляется в вашу сеть.
Ваш брандмауэр / маршрутизатор преобразует общедоступный IP-адрес в частный IP-адрес (в зависимости от конфигурации трансляции IP-адресов).
Затем ваш брандмауэр / маршрутизатор выполняет ARP для MAC-адреса рассматриваемого IP-адреса.
Соответствующая виртуальная машина отвечает на запрос ARP.
Ваш брандмауэр / маршрутизатор отправляет трафик на MAC-адрес.
Ваш коммутатор перенаправляет трафик на соответствующий порт коммутатора (на основе его таблицы MAC-адресов).
Трафик проходит через pNIC хоста ESXi (без искажений).
Соответствующая виртуальная машина потребляет трафик и направляет его на соответствующий веб-сайт (в случае, если вы размещаете несколько веб-сайтов на одном веб-сервере с использованием заголовков хоста или эквивалента Linux) или на соответствующий веб-сервер (в случае, если вы используются прокси-сервер и несколько веб-серверов).