Маршрутизация внешнего HTTP-трафика на несколько машин в моей сети

Маршрутизация внешнего HTTP-трафика на несколько машин в моей сети

Это, очевидно, возможно, поскольку так делают все веб-фермы, однако я не веб-ферма.

У меня довольно хорошие технические навыки, в основном в Windows, но я бы с радостью установил простую Linux-машину, чтобы добиться этого.

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

Reporting.example.com => PC1
Demos.example.com => PC2
MySite.example.com => PC1
Three.example.com => PC3
(all domain obviously resolve to my single internet facing IP address).

Могу ли я получить маршрутизатор, который будет делать это (я знаю о переадресации портов и т. д., но они работают только на портах), могу ли я настроить промежуточный Linux/XP-бокс с переадресацией? Есть ли простое решение?

решение1

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

  1. Маршрутизатор удерживает WAN IP. Если ваш маршрутизатор позволяет указывать сопоставление имени хоста и IP, вы можете попробовать добавить это, сопоставив каждый домен с внутренним IP вашей сети.

  2. Если маршрутизатор не может этого сделать, вы можете настроить обратный прокси-сервер на одной из систем для пересылки трафика по домену на внутренние системы. Это удобно, так как вы можете использовать его также для отказоустойчивости.

вот пример конфигурации vhost для Apache в качестве обратного прокси-сервера.

ServerName Demos.example.com
ProxyPreserveHost On
ProxyTimeout 5400
ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
ProxyPassReverse / http://LAN_IP1/

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

решение2

Решение Вангела сработало отлично, я разъяснил это здесь для всех остальных.

Это необходимо добавить в файл http.conf.

<VirtualHost *:80> 
 ServerName Demos.example.com
 ProxyPreserveHost On
 ProxyTimeout 5400
 ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
 ProxyPassReverse / http://LAN_IP1/
</VirtualHost >

Вам также необходимо включить следующие модули

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

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