Dos o más servidores con la misma IP pública

Estaba escribiendo el post del nuevo servidor y me estaba enrollando demasiado explicando cómo hice para tener dos servidores funcionando con una única IP pública, así que he decidido hacer un post aparte y orientarlo más a un pequeño tutorial.

El caso es el siguiente: tenemos un servidor normal y corriente en nuestra red local, pero por lo que sea, queremos que otro ordenador de nuestra red sea también un servidor. En mi caso, el servidor normal se trataba de un netbook y el nuevo servidor era una máquina virtual en mi ordenador principal para pruebas con Ubuntu Server.

Al primero se accede a través de www.cbelena.es y al segundo quería que se accediese a través de test.cbelena.es. Ambas direcciones apuntan a cbelena.dyndns.org, que se auto-actualiza con la IP de mi ISP. Para conseguir esa diferenciación, podemos hacer lo siguiente.

Necesitamos configurar el Apache que está en el netbook añadiendo lo que se llama otro VirtualHost. Uno de ellos es el que siempre ha estado, y el nuevo que tenemos que añadir es el que permite redirigir las peticiones de test.cbelena.es al otro servidor de la red. No sé si lo que acabo de decir es técnicamente correcto, pero la siguiente imagen aclara un poco el funcionamiento:

Dos servidores con una IP

Gracias al módulo de Apache mod_proxy, es posible tener dos o más servidores en una red con una misma IP pública

Esos VirtualHost se modifican en el fichero /etc/apache2/sites-available/default. En mi caso quedaría algo así:

# Éste es el que ya teníamos:
<VirtualHost *:80>
# ...
</VirtualHost>
# Y éste es el que tenemos que añadir:
<VirtualHost *:80>
ServerName test.cbelena.es
ProxyPass / http://test.cbelena.es
ProxyPassReverse / http://test.cbelena.es
</VirtualHost>

Como has visto en la imagen, es necesario cargar un par de módulos de Apache que no vienen activados por defecto. Son proxy.load y proxy_http.load. Podemos cargarlos fácilmente haciendo:

a2enmod proxy proxy_http

También es necesario editar el fichero /etc/hosts añadiendo que test.cbelena.es se encuentra en 192.168.1.102, que en mi caso es la IP local de la máquina virtual:

127.0.0.1 	localhost
# ...
192.168.1.102	test.cbelena.es

Reiniciamos Apache…:

sudo /etc/init.d/apache2 restart

…y ya debería funcionar. Prueba poniendo en tu navegador una dirección y luego otra, y verás que cada una carga desde un servidor diferente.

Como apunte, VirtualBox por defecto crea las máquinas virtuales de forma que no hay que configurarlas para tener Internet en ellas, pero para este caso es necesario modificar un parámetro en Configuración > Red para que en vez de por NAT se conecte a “Adaptador puente”:

Adaptador puente VirtualBox

Y en “Nombre” te debería salir el nombre de la tarjeta de red de tu ordenador. Así ya podrás configurar la máquina virtual como si fuera otro ordenador más de tu red local, con IP 192.168.1.x o el rango que utilices.

Imagen | labloguera.net

Actualización 12/08/11: En el blog de Sakrow tienes otro tutorial complementario al que nos ocupa para tener dos páginas web pero con la diferencia de estar alojadas en el mismo servidor.

28 comentarios / Añade el tuyo debajo

  1. ya dime igual esas lineas que se modifica en el host.

    se hace en el servidor 1 o en el servidor 2
    o en ambas partes..

  2. man me salio en masomenos pero lo malo
    que lo puedo ver en mi lan pero no afuera .
    ademas sale https y no en http

    asi es se redireciona a https o es solo configuracion

    1. Hola de nuevo,

      Desconozco por qué te sale https y no http, la verdad.
      Si puedes ver desde tu LAN las páginas cargadas en tus dos servidores lo más probable sea una mala configuración de tu router. Imagino que tendrás abierto el puerto 80 para la IP del servidor que tenga el VirtualHost ¿no?

      Saludos.

  3. Pingback: como tener dos servidores con la misma ip pública. | Conalep Cancún II —> Informática

  4. Podrías poner ejemplo de como acceder en el navegador, es decir, que dirección se debe poner o escribir si quieres ingresar remotamente desde internet!?
    Tengo dos máquinas con apache. Sería así?

    http://dominio.dyndns.org/?????????

    Gracias

    1. Hola Martin,

      Pues siguiendo el ejemplo del post, con www.cbelena.es se accedería a uno y con test.cbelena.es a otro.

      Un saludo!

  5. Hola, este post me serviría si por ejemplo quiero tener algo como:
    http://www.dominio1.com
    http://www.dominio2.com
    http://www.esteesotro.com.ar
    todos apuntados a probando.dyndns.org

    O solo para subdominios como mencionas

    1. Hola Jonathan,

      Que sean subdominios o dominios normales no importa si todos apuntan a tu IP pública. Lo único es que cambia mínimamente la configuración en tu servidor web, pero nada más.

      De todas formas, si lo que buscas es servir diferentes web dependiendo del dominio por el que acceda el público, todo con el mismo servidor, entonces te conviene seguir el otro tutorial que te comentaba como respuesta a otro comentario tuyo de hace unas semanas.

      Un saludo!

      1. Desde ya muchisimas gracias!!! Nose porque no habia leido el otro comentario. Un saludo enorme y sigue asi!!!! Abrazo

  6. Hola de nuevo, podrás hacernos un tuto sobre como migrar a https? desde ya muchas gracias

    1. Hola Jonathan,

      Disculpa la demora en responderte. Como podrás ver, no publico nada desde 2013, la verdad es que tengo un poco abandonado esto. Pero tienes multitud de sitios web que te pueden orientar con lo que buscas. Un buen punto de partida es la web de Ayuda WordPress.

      Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados con *