MICRO HOWTO DE REVERSE PROXY CON APACHE Version 1.2 2005/03/13 ---------------------------------------------------------------------- Cambios: Tal como estaba, este howto dejaba un open proxy, lo cual no es nada bueno. se cambió el parámetro ProxyRequests a Off corrigiendo el problema con eso. ---------------------------------------------------------------------- Hacer Proxy Inverso de multiples servidores web internos desde Apache. Si te ha pasado que tienes más de un servidor interno que quieres exponer a internet, y sólo dispones de una IP, entonces iptables solamente te sirve si redirijes otro puerto al puerto 80 de la maquina interna. Desafortunadamente, muchas empresas por seguridad se "evitan problemas" y dan salida solamente al puerto 80 destino, con lo cual dejan fuera del alcance del usuario cualquier site con puerto diferente al 80, por ejemplo, el 8080, el 81, el 8000, etc. qué hacer en estos casos? la única solución es un proxy, pero inverso. de fuera hacia dentro de tu red. Si ya cuentas con squid, la misma documentación de Squid te dice que éste puede ser usado como proxy bidireccional. sin embargo, la configuración no es intuitiva y puede ser un dolor de cabeza dejarlo funcionando. (cosa que me pasó a mi. nunca pude hacer proxy del servidor que estaba dentro). Esto nos deja con el único otro software que puede hacer proxy de http, sin que interfiera entre nuestro servidor apache y nuestro squid si lo tenemos: Apache mismo. el truco está en activar el módulo mod_proxy. en tu http.conf deberás activar/añadir esta linea: AddModule mod_proxy.c Cabe aclarar que estamos en el supuesto de que apache fué sido compilado con soporte de mod_proxy. si no está compilado con soporte de mod_proxy, deberás recompilar configurandole que SI lo incluya. Viene desde fuente ya incluido. Por ejemplo, Slackware incluye el mod_proxy por default. luego en la sección de proxy: # # Proxy Server directives. Uncomment the following lines to # enable the proxy server: # ProxyRequests Off Order deny,allow Allow from all y ya al final en tus virtual hosts: NameVirtualHost * ServerAdmin webmaster@correo.mio ServerName elproxiado.midominio.com ProxyPass / http://10.0.0.2/ ProxyPassReverse / http://10.0.0.2/ ErrorLog logs/elproxiado-error_log CustomLog logs/elproxiado-access_log common Y eso es todo. Aqui asumo que la ip interna del otro servidor es 10.0.0.2 . Notese que en ProxyPass lo primero que aparece es una diagonal "/" esto es porque podemos decirle a apache a partir de cual directorio queremos nosotros que inserte el otro sitio web. Qué quiero decir copn esto? Digamos que mi server es http://redimido.glo.org.mx y quiero meter dentro de mi sitio a todo el sitio del glo. Simple: ServerAdmin redimido@glo.org.mx ServerName redimido.glo.org.mx ProxyPass /glo http://www.glo.org.mx ProxyPassReverse /glo http://www.glo.org.mx Asi, si alguien accesa http://redimido.glo.org.mx/glo estará en realidad accesando el sitio web del glo. Igualmente puedo insertar un subdominio de otro sitio, y asi puedo tener las referencias "en vivo" dentro de mi site. Tiene desventajas? Claro. Si hago proxy inverso de un servidor externo al servidor donde corro el proxy inverso, estaré consumiendo mi ancho de banda para bajar lo que el usuario pida, y luego lo volveré a consumir entregandole al usuario lo que pidió. Por eso no es recomendable hacer proxy inverso de servidores ajenos a mi. Esta tecnología está bién para el caso de tener toda una granja de servidores web enmascarados por una sola ip externa, por ejemplo. o hacer proxy inverso de algún servidor interno que responde a velocidad de LAN (típicamente 100 megabits). Es extremadamente útil cuando tienes un servidor apache y llega un servidor IIS y tu no quieres perder tu página en apache, y pues solamente "haces proxy" al servidor IIS mediante un subdominio o un directorio de tu site. Con mis agradecimientos al que preguntó en Experts Exchange algo equivocado, pero que me terminó haciendo ver la luz =) Espero les sea útil. Creado por Gabriel Orozco Ruiz Velazco Correo: redimido -en- glo.org.mx Página donde se obtiene la versión más reciente: http://redimido.glo.org.mx Liberado bajo la Licencia de Documentación GNU.