Parece que o que você quer é realmente um host virtual baseado em nomes.
Estou procurando uma solução para encaminhar um endereço IP público e uma porta específica para máquinas diferentes com base no nome do host (a partir de agora, eu preciso apenas para HTTP).
A configuração atual é NAT em um roteador de mercadoria (ele fornece apenas uma porta pública simples para o endereço IP privado / encaminhamento de porta). Posso adicionar uma máquina Windows Server 2008 R2 antes do roteador, se necessário, mas prefiro não fazê-lo.
Então, idealmente, gostaria de ter a configuração atual e o encaminhamento ser feito em um dos Windows Servers. É possível fazer isso?
Parece que o que você quer é realmente um host virtual baseado em nomes.
Tente usar os hosts virtuais baseados em nome do Apache e o mod_proxy para redirecioná-lo para outro host.
<VirtualHost *:80>
ServerName www.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://192.168.254.197/
ProxyPassReverse / http://192.168.254.197/
</VirtualHost>
<VirtualHost *:80>
ServerName www.other_example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://192.168.254.198/
ProxyPassReverse / http://192.168.254.198/
</VirtualHost>
O texto acima pegará o example.com e o other_example.com em seu endereço IP de frente e, em seguida, encaminhará cada um deles para um endereço IP diferente.
Você pode comprar dispositivos muito caros da Cisco, f5 e outros que fazem isso, ou mais simplesmente você pode configurar uma instância de lula cache para escutar solicitações recebidas e, em seguida, reescrever o URL no squid ou manter os mapeamentos de nomes / endereços locais no arquivo de hosts.
Se você precisar lidar com HTTPS, execute uma instância de stunnel na frente do proxy HTTP para encerrar o SSL.