Это, очевидно, возможно, поскольку так делают все веб-фермы, однако я не веб-ферма.
У меня довольно хорошие технические навыки, в основном в 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
Это не единственный и не лучший способ, но я бы поступил так. Поправьте меня, если я неправильно понял какие-либо факты в вашем вопросе.
Маршрутизатор удерживает WAN IP. Если ваш маршрутизатор позволяет указывать сопоставление имени хоста и IP, вы можете попробовать добавить это, сопоставив каждый домен с внутренним IP вашей сети.
Если маршрутизатор не может этого сделать, вы можете настроить обратный прокси-сервер на одной из систем для пересылки трафика по домену на внутренние системы. Это удобно, так как вы можете использовать его также для отказоустойчивости.
вот пример конфигурации 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