Inicio arrow Tutoriales arrow Debian arrow Apache2 ProxyPass (mod_proxy)
 
  XnRnXZvLpO www.softwarelibre.misiones.gov.ar
Apache2 ProxyPass (mod_proxy) Imprimir E-mail

En éste artículo mostraré cómo hacer que un servidor web interno pueda ser accedido desde internet, sin cambiar ninguna de las reglas del firewall ni comprometiendo la seguridad de su red. Veremos como usar la sentencia ProxyPass de Apache para lograr esto.

Esta sentencia permite mapear en el servidor local a servidores remotos, el servidor local aparece como un espejo del servidor remoto.

Una computadora que ofrece servicios normalmente no es una buena plataforma de desarrollo. Las razones son evidentes, por lo que resulta una buena práctica contar con un equipo servidor y desarrollar en otro.

Escenario

Tenemos 3 computadoras con sistema operativo *nix, cada uno con su Apache2, la principal y a la vez firewall, es eys que tiene dos placas de red, una con ip pública y la otra conectada a la LAN donde estan los otros servidores.

  • eys: (200.45.69.53 - 10.0.0.1)
  • servidor1: (10.0.0.11)
  • servidor2: (10.0.0.12)
¿Es posible con una sola IP pública (200.45.69.53) servir 2 apaches distintos: servidor1 y servidor2?

Solución

Activando mod_proxy en el Apache de eys y creando un par de registros A en el correspondiente archivo de configuración named de dominio.gov.ar el entorno quedaría de la siguiente manera:



Activando mod_proxy

» Alternativa 1, usando el comando a2enmod:

a2enmod proxy 

» Alternativa 2, implementación manual:

En el conocido /etc/apache2/apache2.conf buscamos la sección:

# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

Estas líneas indican al Apache que cargue todos los módulos definidos en la carpeta /etc/apache2/mods-available/ mediante los archivos .load.

En caso de no contar con un proxy.load será necesario generar uno con las siguientes entradas para cargar las librerías necesarias:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_connect_module /usr/lib/apache2/modules/mod_proxy_connect.so

Luego tendremos que crear un enlace simbólico en /etc/apache2/mods-enabled/ que apunte a proxy.load, para ello:

ln -s /etc/apache2/mods-available/proxy.load proxy.load

Configurando Apache

Ahora agregaremos los hosts virtuales (/etc/apache2/sites-available/default) añadiendo lo siguiente:

<VirtualHost *:80>
ServerName servidor1.dominio.gov.ar

ProxyPreserveHost On
ProxyRequests Off

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

    ProxyPass / http://10.0.0.11/
    ProxyPassReverse / http://10.0.0.11/
</VirtualHost>
<VirtualHost *:80>
    ServerName servidor2.dominio.gov.ar

ProxyPreserveHost On
ProxyRequests Off

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

   ProxyPass / http://10.0.0.12/
    ProxyPassReverse / http://10.0.0.12/
</VirtualHost>

Para hacer todos los cambios efectivos bastará con un reinicio de Apache.

/etc/init.d/apache2 force-reload

Configurando Bind9

Evidentemente si en el archivo de configuración bind9 no tenemos las entradas A de servidor1 y servidor2 de poco servirían todos nuestros cambios en Apache, por lo que editamos /etc/bind/db.dominio.gov.ar.hosts agregando:
 servidor1                A       10.0.0.11
servidor2 A 10.0.0.12

Un reinicio de Bind sería el último paso de esta configuración.

/etc/init.d/bind9 restart

Recursos adicionales

[Documentacion de Apache mod_proxy]
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
[Soporte para el Host Virtual basado en nombres de Apache]
http://httpd.apache.org/docs/2.0/vhosts/name-based.html
[Documentacion del Virtual Host de Apache]
http://httpd.apache.org/docs/2.0/vhosts/index.html

 
< Anterior   Siguiente >
 
 
(C) 2010 Ambito de Software Libre en el Gobierno de la Provincia de Misiones
Free Joomla Template designed by funky-visions.de