Modulo Proxy de Apache (en Ubuntu)

Este modulo de Apache nos ofrece la posibilidad de disponer de un proxy en nuestra red interna para distribuir las aplicaciones web por los distintos servidores web de nuestra red y poder acceder a ellas desde internet sin tener una ip pública para cada uno. De este modo, un servidor web podría proporcionar contenidos de otro servidor de forma transparente para el cliente.

Imaginemos que tenemos contratada una sola conexión a internet (una sola Ip Pública) y disponemos de varios servidores web en nuestra red interna.

Uno de los servidores será quien haga de proxy y quien tendrá adjudicada la Ip Pública, bajo el dominio www.ejemplo.com. Por tanto será él el único servidor al que podremos acceder desde internet.

Los otros servidores sólo tendrán acceso desde la red interna, pero necesitamos que sean también visibles desde internet.

Aquí es donde entra en acción el modulo proxy y lo configuraremos de la siguiente manera:

webserver1: 192.168.1.11 (el que posee la ip pública, www.ejemplo.com)

webserver2: 192.168.1.12

webserver3: 192.168.1.13

Cuando acedamos a

http://www.ejemplo.com/12 —nos redirecciona a—> http://192.168.1.12

Lo primero es instalar Apache y seguidamente el módulo proxy_html ya que éste no viene con apache2 por defecto:

# apt-get install apache2
# apt-get install libapache2-mod-proxy-html

Una vez instalado, ahora debemos activar los módulos que usaremos ( por defecto vienen algunos activados pero no los que necesitamos).

Entramos en /etc/apache2/mods-available donde se encuentran todos los módulos de apache que tenemos instalados. Para activarlos ejecutaremos, dentro de este directorio:

# a2enmod nombredelmodulo (sin el .conf o .load)

Activamos:

# a2enmod proxy
# a2enmod proxy_http

(Activarlos no es otra cosa que crear enlaces simbólicos de éstos archivos, tanto .conf como .load en el directorio /etc/apache2/mods-enabled)

Ahora modificamos el archivo proxy.conf:

# nano proxy.conf

y descomentamos las lineas siguientes:

<Proxy *>

AddDefaultCharset off

Order deny, allow

# Deny from all ——->Ésta la dejamos comentada

Allow from all

</Proxy>

Después creamos un archivo por ejemplo /etc/apache2/aitor.conf

# nano aitor.conf

Introducimos aquí la configuración del proxy para el dirreccionamiento

<VirtualHost *:*>

ServerName “ejemplo.com”

ProxyRequests off

ProxyPreserveHost on

ProxyPass /12 http://192.168.1.12/

ProxyPassReverse /12 http://192.168.1.12/

</VirtualHost>

Ahora en /etc/apache2/apache2.conf (archivo donde se le dice a apache lo que tiene que cargar) incluiremos la siguiente línea para cargar nuestro archivo:

# Include aitor.conf

En mi experiencia, debemos escribirla justo después de donde pone “Include http.conf” dado que cuando lo ponía más abajo no funcionaba, creo que debe estar incluida por encima de “Include ports.conf” para que se cargue antes de esta línea porque es con lo que da conflicto. Además si ponemos lo que escribimos en aitor.conf en http.conf también funciona.

Para finalizar y reiniciar todo el servicio:

# service apache2 restart

En el navegador escribimos: ejemplo.com y estaremos en el servidor web del proxy

Y si escribimos: ejemplo.com/12 estaremos en el otro servidor

NOTA:

A mi me funciona la pasarela hasta el otro servidor interno, es decir el modulo proxy funciona, pero al escribir ejemplo.com no me muestra su propia web. Antes de hacer los cambios proxy si funcionaba, después no. Pero puede tener que ver con que modifiqué el archivo /etc/hosts.