У меня один публичный 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 не даст этому застрять в бесконечном цикле.
Это решение, кажется, работает в моей голове и на бумаге, но я не смогу реализовать его в ближайшее время.
Кто-нибудь видит причину, по которой это не сработает?
Спасибо.