¿Cómo alojo varios servidores web físicos detrás de una sola dirección IP?

14

Estoy ejecutando varios servidores web en mi casa, cada uno de los cuales está conectado a mi enrutador.

Servidor A Servidor B Servidor C

Actualmente solo puedo usar un servidor ya que mi puerto IP (xx.xxx.xx.xx) 80 apunta hacia el servidor A. Sin embargo, algunos dominios apuntan al servidor A, algunos a B, etc.

Con mi única dirección IP, ¿cómo apunto a cada servidor? Por ejemplo, mis registros A (host) apuntan solo a mi dirección IP.

Lo siento si sueno confuso. Avísame si no estoy siendo claro.

Cada servidor ejecuta Ubuntu Server 12.04.02 y usa Apache (si eso ayuda). Mi enrutador también es Netgear y mi ISP es Time Warner Cable.

Stephen Cioffi
fuente
@kobaltz No exactamente porque se trata de servidores diferentes, no de hosts virtuales. Estos son 3 servidores físicos
Stephen Cioffi
Mi respuesta dentro de la pregunta sigue siendo la misma en la que tendría un servidor proxy inverso que sería lo primero que se golpea después del enrutador. A partir de ahí, enviaría los datos a uno de los tres servidores. Incluso puede hacer esto desde el enrutador si usa algo como OpenWRT.
kobaltz
Actualmente estoy usando la explicación en mi respuesta a la otra pregunta. Tengo un servidor de máquina virtual que tenía una máquina virtual para la puerta de enlace, y luego 20 nodos. Dependiendo del subdominio y el nombre de dominio, envía los datos a uno de los 20 servidores.
kobaltz

Respuestas:

9

Los sitios web serán reconocidos a través del Host:encabezado enviado desde el navegador. Pero dado que su enrutador no es capaz de exigir HTTP utilizado por el alojamiento virtual, deberá elegir un servidor como "punto final" (y decirle a su enrutador esa dirección como Servidor virtual / DMZ).

Luego, configura esa máquina como servidor web para sus dominios y proxy para las otras (por ejemplo, usando el proxy inverso de Apache ), o (tal vez mejor) instala un proxy en esa máquina y lo usa para multiplexar solicitudes a los otros servidores . Algunos dominios incluso pueden estar alojados en la misma máquina. nginxes adecuado para este tipo de trabajo, pero también puede usar otro software (por ejemplo pound).

Creo que la segunda solución es mejor porque no es necesario jugar con las configuraciones de los servidores web: un proxy hace el proxy y varios servidores web hacen el servicio web. Si necesita agregar servidores o mover hosts virtuales, esta arquitectura es más fácil de mantener.

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

La latencia agregada debido a que la solicitud se decodifica dos veces (una vez por el proxy, una vez por el destinatario previsto) es insignificante y más que compensada por la aceleración proporcionada por el proxy mismo.

LSerni
fuente
Si creo un invitado de VM como proxy, ¿cuál es el mejor sistema operativo para usar y qué recursos de hardware debo asignar? Menciona configurar este proxy en la DMZ ... ¿es necesario? ¿No puedo reenviar solo los puertos que quiero abrir para que todavía haya alguna capa de protección a través del firewall y NAT del enrutador?
Reece
Los recursos para el proxy no son un problema, estarán fuertemente vinculados a la red. En cuanto al sistema operativo, diría que es un Unix, Linux o BSD, dependiendo de con qué se sienta más cómodo. También hay dispositivos listos para usar para varias soluciones de virtualización (vmware, virtualbox, xen, etc.). Y sí, definitivamente puede reenviar puertos solo aquellos puertos que necesita.
LSerni