mod_proxy

Siguiendo buenas costumbres informáticas, un ordenador que ofrece servicios normalmente no ha de ser una buena plataforma de desarrollo. Las razones son evidentes, por lo que a veces podemos permitirnos el lujo de servir en un equipo y desarrollar en otro.

Entorno

Definamos el entorno: 3 ordenadores con sistema operativo *nix, cada uno con su Apache, el principal es servidor haciendo a su vez funciones de firewall:
  • servidor: (190.12.12.12 - 192.168.0.1)
  • portatil: (192.168.0.3)
  • desarrollo: (192.168.0.2)

Solución 1

El asunto está en el momento que el cliente se interesa por su versión beta, la cual quiere supervisar. No es algo difícil de solucionar: en el servidor, firewall -o donde corresponda- se hace una redirección de un puerto alto al Apache de la máquina en la que desarrollamos y listo. Como el número de puertos ofrece un ámplio abanico de selección, podríamos hacer lo mismo con varias máquinas de la red local:



Solución, eficaz y sencilla pero esta vez no concluyente, quería ir más allá. ¿Podría con una sola IP pública (190.12.12.12) servir 3 Apaches distintos: servidor, desarrollo y portatil sin este lío de números?, acordarme de los puertos no es complicado, pero menos complicado sería hacer referencia directa al nombre de la máquina. Solución: mod_proxy.

Solución 2

Por lo tanto, activando mod_proxy en el Apache de servidor y creando un par de registros A en el correspondiente archivo de configuración named de dominio.com el entorno quedaría tal que así:



Configurando Apache

En el conocido httpd.conf seguimos el include que nos lleva a /etc/apache/modules.conf. Saltándonos el comentario que nos recomienda no editar este archivo introducimos una única entrada para cargar la librería libproxy:
LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
Ahora vayamos al archivo de hosts virtuales (vhosts.inc en mi caso) añadiendo lo siguiente:
<VirtualHost *:80>
        ServerName              portatil.dominio.com
        ProxyPass               / http://192.168.0.3/
        ProxyPassReverse        / http://192.168.0.3/
</VirtualHost>

<VirtualHost *:80>
        ServerName              desarrollo.dominio.com
        ProxyPass               / http://192.168.0.2/
        ProxyPassReverse        / http://192.168.0.2/
</VirtualHost>
Para hacer todos los cambios efectivos bastará con un reinicio de Apache.

Configurando Bind9

Es evidente que si en el archivo de configuración bind9 no tenemos las entradas A de portatil y desarrollo de poco servirían todos nuestros cambios en Apache, por lo que editamos /etc/bind/master/dominio.com.hosts agregando:
portatil                  A       190.12.12.12
desarrollo                A       190.12.12.12
Un reinicio de Bind sería el último paso de esta configuración.

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.