Dos servidores con la misma IP publica – Proxy Server

Apache + mod_proxy - Diagrama
Apache + mod_proxy - Diagrama

En una entrada anterior vimos como podíamos tener mas de una pagina en un único servidor con VirtualHost. Gracias a esto podíamos ahorrarnos coste y problemas, ya que también únicamente tenemos un puerto para web que es el 80.

Ahora vamos a tratar otro tema parecido, pero diferente, tener mas de un servidor web con una única IP publica, todo esto, gracias a un modulo Proxy de Apache.
Esto empezó hace tiempo cuando estuve probando las maquinas virtuales XEN. Ello me obligaba a tener un servidor Proxy si quería que mas de una maquina virtual fuera accesible desde la red.

Pero durante un tiempo no fui capaz de hacerlo funcionar, en un principio pensé que eran las complicadas configuraciones de red en XEN, las que no dejaban a las maquinas virtuales acceder a la red.Por tanto, desistí un poco del tema y lo deje apartado, pues ya había consumido mucho de mi tiempo.

Mas tarde encontré el blog de Carlos Beleña en el que comentaba como había creado su propio servidor proxy y gracias al cual tengo que agradecer el que me volviera a picar con el tema, y por fin encontré con la configuración correcta del servidor y probando con las maquinas virtuales XEN, descubrir que el problema fue la configuración del Proxy, no de las tarjetas de red de las maquinas virtuales XEN.

Por eso voy a explicaros como podéis tener un servidor Proxy.

Explicare las dos partes, la parte que a Carlos le sirvió y la que me funciono a mi, dado que por ciertas causas (ahora mismo desconocidas para mi) no nos valió la misma configuración.

Lo primero es ponernos en contexto, como en el anterior post sobre VirtualHost tenemos sakrow.com y blog.sakrow.com

Primero lo que tenemos que hacer es activar los módulos Proxy de Apache.

a2enmod proxy proxy_http

Primera configuración

Con esto ya tenemos los módulos cargados, y podemos empezar a configurar los VirtualHost. Como hemos dicho antes vamos a suponer que tenemos a sakrow.com y blog.sakrow.com, bien, supongamos que sakrow.com esta en localhost, en nuestra propia maquina, por ello tenemos que dejar la configuración que pusimos anteriormente:

En sakrow:

#Web de sakrow
<VirtualHost *:80>
ServerName 192.168.10.100
ServerAlias sakrow.com
DocumentRoot /var/www/sakrow
DirectoryIndex index.html
ServerAdmin [email protected]
</VirtualHost>

Ahora blog.sakrow.com

#Blog de sakrow
<VirtualHost *:80>
ServerName blog.sakrow.com
ProxyPass / http://192.168.10.101
ProxyPassReverse / http://192.168.10.101
</VirtualHost>

Con esto tenemos la configuración de Apache+mod_proxy. A diferencia de Carlos, yo no he usado un dominio para identificar la maquina, he usado directamente su IP. Pero podéis cambiar el 192.168.10.101 por blog.sakrow.com, pero luego tenéis que configurar el Host del terminal

Escribiendo lo siguiente en /etc/hosts:

blog.sakrow.com 192.168.10.101

De este modo, siempre que se haga referencia a blog.sakrow.com el servidor sabrá que se encuentra en la dirección 192.168.10.101. Es como un DNS interno de la maquina.

Ahora lo único que queda es reiniciar el Apache para que cargue las nuevas configuraciones, de modo que podamos empezar a usar el Proxy.

 

Segunda Configuración (la que me valió a mi)

La configuración que habéis visto antes se supone que es suficiente para que el servidor proxy funcione. Pero yo lo probé así y no funciono. En mi caso lo que tuve que hacer dentro de las configuraciones fue esto:

#Blog de Sakrow
<VirtualHost *>
    ServerName blog.sakrow.com
    ServerAlias blog.sakrow.com

    ProxyPreserveHost On
    ProxyRequests Off

#Permitimos las conexiones a traves del proxy

 <Proxy *>
         Order deny,allow
         Allow from all
    </Proxy>

 #Direccion IP del servidor destino

    ProxyPass / http://192.168.10.101/
    ProxyPassReverse / http://192.168.10.101

</VirtualHost>

Aquí ocurre lo mismo que antes, podemos dejarlo con direcciones IP o con dominios.

Recordad que siempre que dejéis este tipo de configuraciones con dominios, tenéis que configurar el Host, ya que de lo contrario no sabrá que maquina es y no funcionara

Ahora la cosa es mas sencilla aun, si ademas de usar el Proxy, queremos tener mas de una web en la otra maquina, solo hace falta configurar bien el Proxy en la que recibe el puerto 80 y hacer VirtualHosts en la que no tiene el proxy, de esta manera podremos tener segmentadas todas las paginas web.

Espero que os sea de gran utilidad, a mi me ha costado mucho conseguir esa configuración.

Gracias Carlos, por picarme de nuevo y que al final lo consiguiera.