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