Roteando tráfego HTTP externo para várias máquinas na minha rede

Roteando tráfego HTTP externo para várias máquinas na minha rede

Obviamente, isso é possível porque é o que todos os webfarms fazem, mas não sou um webfarm.

Eu tenho uma habilidade técnica muito boa principalmente em Windows, mas ficaria feliz em configurar uma caixa Linux simples para conseguir isso.

No momento tenho um roteador voltado para a Internet, que permite o tráfego para uma máquina em várias portas. Isso funciona bem e posso executar vários sites nessa máquina, mas gostaria de poder interceptar o tráfego e enviá-lo para máquinas separadas com base no nome de domínio.

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).

Posso obter um roteador que faça isso (eu sei sobre encaminhamento de porta, etc., mas eles só funcionam em portas), posso configurar uma caixa linux/XP intermediária com um encaminhador? Existe uma solução fácil?

Responder1

Esta não é a única ou a melhor maneira, mas é assim que eu faria. Corrija-me se eu entendi mal algum fato em sua pergunta

  1. O roteador contém IP WAN. Se o seu roteador permitir a especificação do nome do host para o mapeamento de IP, você pode tentar adicioná-lo mapeando cada domínio para o IP interno da sua rede.

  2. Se o roteador não puder fazer isso, você poderá configurar um proxy reverso em um sistema para encaminhar o tráfego por domínio para sistemas back-end. Isso é útil porque você também pode usá-lo para failover.

aqui está um exemplo de configuração vhost do apache como proxy reverso.

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

ps Você não precisa ter um servidor proxy reverso dedicado, você pode usar um dos sistemas existentes para fazer isso e isso pode servir um domínio localmente e fazer proxy de outros domínios. Este sistema específico deve ser aquele para o qual o seu roteador encaminha todo o tráfego da web.

Responder2

A solução Vangels funcionou muito bem, esclareci aqui para mais alguém.

Isso precisa ir no arquivo 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 >

Você também precisa habilitar os seguintes módulos

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

informação relacionada