Existen módulos para Apache que nos permiten convertirlo en un Reverse Proxy, denominados mod_proxy_*. Los que interesan para esta explicación son mod_proxy y mod_proxy_http.
Supongamos que tenemos la siguiente configuración:
Internet ----> | www.dvpem.org / proxy.dvpem.org |<---> | background-man1.dvpem.org |
Donde www.dvpem.org tiene IP pública accesible desde Internet y es atendida por el server proxy.dvpem.org, y background-man1.dvpem.org tiene una IP privada. El web server background-man1 es el encargado de procesar todos los pedidos, pero no queremos exponerlo, por lo que levantamos un Reverse Proxy (proxy.dvpem.org), que es quien atiende los request a la página www.dvpem.org y los reenvía a background-man1 para su procesamiento. Una vez que background-man1 termina, retorna los resultados a proxy.dvpem.org que es quien responde finalmente al cliente.
Para lograr esto, sólo necesitamos realizar los siguientes 4 pasos:
1. Instalar apache.
2. Habilitar mod_proxy y mod_proxy_http:
a2enmod proxy proxy_http
3. Crear un Virtual Host que atienda los pedidos www.dvpem.org y los reenvíe a background-man1:
<VirtualHost *:80>
ServerName www.dvpem.org:80
ServerAlias www.dvpem.org
Alias /about.html /var/www/about.html #about.html lo procesa el proxy
ProxyPassMatch ^/about.html ! #Indicamos que no proxee los requests del file about.html
ProxyPass / http://background-man1.dvpem.org/ #Mapeamos los request www.dvpem.org para que vayan a background-man1
ProxyPassReverse / http://background-man1.dvpem.org/ #Reescribe los headers retornados por background-man1 (ej: Location, Content-Location, URI) para que hagan referencia a www.dvpem.org
</VirtualHost>
En la configuración agregué una yapa, y es que los request de about.html sean retornados por el mismo proxy, utilizando el file que está en su filesystem local. Esto es, no irá a background-man1, sino que lo retornará de un file en el mismo server. Esto puede ser muy útil si queremos que además de proxy sirva algunas cosas.4. Reloadear la configuración de apache:
service apache2 reload
El módulo es muchísimo más polenta que esto, expliqué un uso muy básico. Algo interesante es que podríamos resolver diferentes paths a diferentes servers, como por ejemplo usando:
ProxyPass /main http://background-man1.dvpem.org/
ProxyPassReverse /main http://background-man1.dvpem.org/
ProxyPass /images http://images.dvpem.org/
ProxyPassReverse /images http://images.dvpem.org/
Pueden leer más sobre mod_proxy en su página oficial.
0 comentarios:
Publicar un comentario