Переадресация различных имен хостов на различные внутренние IP-адреса через маршрутизатор NAT

Переадресация различных имен хостов на различные внутренние IP-адреса через маршрутизатор NAT

У меня один публичный IP-адрес, один маршрутизатор и несколько серверов за маршрутизатором.

Я хотел бы перенаправить разные домены (все с использованием HTTP) через маршрутизатор на разные серверы.

Например:

example1.com      =>  192.168.0.110
example2.com      =>  192.168.0.120
foo.example2.com  =>  192.168.0.130
bar.example2.com  =>  192.168.0.140

Я понимаю, что это можно сделать с помощью переадресации портов, но мне нужно, чтобы все хосты работали на порту 80.

Я нашел некоторую информацию об IP-маскарадинге, но мне было трудно ее понять, и я не уверен, что это то, что мне нужно.

Другое решение, которое я нашел, — направить весь трафик на сервер обратного прокси, который перенаправляет запросы на соответствующий сервер. А как насчет iptables?

Я использую маршрутизатор Billion 7404 VNPX. Есть ли у этого маршрутизатора функция, которая может это сделать?

Это мои единственные варианты? Я что-то совсем упустил? Один из них предпочтительнее других?

Я поискал, но не думаю, что нахожу правильные ключевые слова.

решение1

Лучшим решением будет использование обратного HTTP-прокси. Для этого можно использовать:

Мы используем Apache с mod_proxy, но я думаю использовать pound.

В качестве аппаратного устройства можно использовать коммутатор Cisco Content Service. См.:http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html

решение2

У меня возникла идея, и я хотел бы узнать, есть ли у кого-нибудь отзывы по этому поводу.

Если я использую идею обратного прокси, я думаю, что смогу решить проблему довольно просто. Я уже использую Nginx на других серверах, так что это мой выбор сервера для обратного прокси.

На маршрутизаторе я буду перенаправлять все входящие соединения на порт 80 на мой сервер обратного прокси. На этом сервере я запущу Nginx со следующим файлом конфигурации:

server {
    listen *:80;
    location / {
        proxy_pass    http://$host;
    }
}

Похоже, что это проксирует запрос на тот же хост. Но вот в чем фокус: в моем файле /etc/hosts я сопоставлю все домены с их внутренними IP-адресами.

182.168.0.110 example1.com
182.168.0.120 example2.com
182.168.0.130 foo.example2.com
182.168.0.140 bar.example2.com

Таким образом, обратный прокси-сервер направит запрошенный хост на тот же хост, но на этом этапе ондолженНайдите файл локальных хостов и сопоставьте его с внутренним IP-адресом. Это также означает, что я могу "установить и забыть" файл конфигурации Nginx.

Потенциальная проблема в том, что если локальное имя хоста не настроено, то обратный прокси отправит запрос обратно в Интернет. Однако я думаю, что NAT не даст этому застрять в бесконечном цикле.

Это решение, кажется, работает в моей голове и на бумаге, но я не смогу реализовать его в ближайшее время.

Кто-нибудь видит причину, по которой это не сработает?

Спасибо.

Связанный контент