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