Enrutar tráfico HTTP externo a varias máquinas dentro de mi red

Enrutar tráfico HTTP externo a varias máquinas dentro de mi red

Obviamente, esto es posible porque es lo que hacen todas las granjas web; sin embargo, yo no soy una granja web.

Tengo bastante buena capacidad técnica, principalmente en Windows, pero con gusto configuraría una caja de Linux simple para lograrlo.

En este momento tengo un enrutador con acceso a Internet, que permite que el tráfico llegue a una máquina en varios puertos. Esto funciona bien y puedo ejecutar varios sitios web en esa máquina, sin embargo, me gustaría poder interceptar el tráfico y enviarlo a máquinas separadas según el nombre de dominio.

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

¿Puedo conseguir un enrutador que haga esto (conozco el reenvío de puertos, etc., pero solo funcionan en puertos)? ¿Puedo configurar una caja Linux/XP intermedia con un reenviador? hay una solucion facil?

Respuesta1

Esta no es la única manera ni la mejor, pero así es como yo lo haría. Corrígeme si entendí mal algún hecho en tu pregunta.

  1. El enrutador tiene IP WAN. Si su enrutador permite especificar el nombre de host a la asignación de IP, puede intentar agregarlo asignando cada dominio a la IP interna de su red.

  2. Si el enrutador no puede hacer eso, puede configurar un proxy inverso en un sistema para reenviar el tráfico por dominio a los sistemas backend. Esto es útil ya que también puede usarlo para conmutación por error.

Aquí hay un ejemplo de configuración de vhost de Apache como proxy inverso.

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

ps. No necesita tener un servidor proxy inverso dedicado, puede usar uno de los sistemas existentes para hacerlo y esto puede servir a un dominio localmente y representar otros dominios. Este sistema en particular debe ser al que su enrutador reenvía todo el tráfico web.

Respuesta2

La solución de Vangels funcionó muy bien, lo he aclarado aquí para cualquier otra persona.

Esto debe ir en el archivo 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 >

También necesita habilitar los siguientes módulos

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

información relacionada