Proxy inverso en Apache

El problema es sencillo de enunciar, pero no tan facil de resolver. Tengo un servidor A con IP pública, al que puedo editar sus archivos de configuración. Desde el servidor A se puede acceder a otro interno, privado, al que llamaré B. No es posible acceder a B directamente (desde fuera). ¿Cómo configuro A para que haga las veces de reverse-proxy? Es decir, quiero que lo que un cliente (navegador Firefox, por ejemplo) pida a A con una determinada dirección de carpeta, por ejemplo, http://A/carpeta , sea redirigido (por el propio servidor A) a la ruta http://B/carpeta y el resultado de esa llamada sea devuelto al cliente Firefox.

Cliente <--> Servidor IP pública (A) <-> Servidor IP Privada (B)

Esto tal cual no parece difícil y se puede hacer activando el módulo proxy_http de Apache. Pero en micaso, al probarlo, me encontré con otro problema añadido: las páginas que B devuelve a A y éste finalmente al cliente Firefox, incluyen código HTML con enlaces a B. Como ya he dicho, desde el cliente Firefox no podemos acceder directamente a B, así que esto era de verdad un problema… hasta que encontré el módulo proxy_html_module, que reescribe en Apache el contenido de las páginas antes de entregarlas 🙂

El módulo proxy_html_module hay que instalarlo (los demás están disponibles en Apache 2 de serie, al menos en Ubuntu):

$ sudo apt-get install libapache2-mod-proxy-html<br />

Así que, en resumen, el problema enunciado se resuelve así:

1) Activar los módulos necesarios en Apache

$ sudo a2enmod proxy_http_module (tiene una dependencia con proxy_module que se resuelve 'automágicamente') $ $ sudo a2enmod proxy_html_module

2) Activar el acceso al Proxy para localhost o la IP del servidor A (si no, toda petición será rechazada)

$ sudo vi /etc/apache2/mods-available/proxy.conf <Proxy *> AddDefaultCharset off Order deny,allow Deny from all Allow from localhost # o en su lugar, la IP pública </Proxy>

3) Definir las redirecciones que nos interesen: $ sudo vi /etc/apache2/sites-enabled/000-default ProxyPass /carpeta/ <a href="http://B/carpeta/">http://B/carpeta/</a> ProxyHTMLURLMap <a href="http://B/carpeta">http://B/carpeta</a> /carpeta # <Location /carpeta/> ProxyPassReverse / SetOutputFilter proxy-html ProxyHTMLExtended On </Location>

Más info en el manual de Apache 2 al respecto de ProxyPassReverse y en la guía de mod_proxy_html

Candidatos a lehendakaritza y Software Libre

Dani Gutiérrez, nos escribe a ITSAS (lista de correo de usuarios de Soft Libre de la EHU) sobre una nueva iniciativa de la plataforma QueremosSoftwareLibre.org: «A la vista de las próximas elecciones de la CAV, desde la plataforma www.queremossoftwarelibre.org hemos preparado un cuestionario sobre el software libre que hemos enviado a los partidos políticos. Esta tarde lo hemos enviado a distintos medios de comunicación, y creo que también puede ser de interés para la gente que estamos en esta lista, así que aquí os va. Por supuesto, tenéis libertad para reenviarlo. Ondo segi»

Aquí tenéis una copia del cuestionario y las respuestas, tanto en euskera como en castellano.

Gestión documental con KnowledgeTree

Juanma Ginzo nos escribe para contarnos su experiencia con Knowledge Tree:

«Hace ya algún tiempo mi socio y yo nos planteamos la posibilidad de ordenar toda la documentación de nuestro despacho. Había papeles hasta debajo de la mesa, los recogimos y los fuimos clasificando en carpetas en un archivador.

El problema vino después al tener que buscar un documento: era lento y existía la posibilidad real de no encontrarlo.

La luz vino tras una consulta a Juanan P. en la que le pedí información sobre alguna forma de almacenar la documentación, que admita muchas maneras y modos de búsqueda, que sea ágil y que no ocupe sitio.

Me respondió con dos soluciones (informáticas):

Una solución de escritorio: http://gpapers.org Una solución cliente/servidor http://www.knowledgetree.com

Miré la primera y no me satisfizo porque me interesaba una solución más enfocada a cliente/servidor, es decir, varios usuarios concurrentes y posibilidad de acceso al despacho desde el exterior entre otras.

La segunda me gustó mucho más pues:

-Permite la concurrencia de múltiples usuarios. -Es aceptablemente rápida -El acceso se puede permitir desde lugares remotos -Aparentemente es fácil de utilizar para el usuario

Knowledgetree es una solución basada en Apache + MySQL + php con un buscador interno basado en java (http://lucene.apache.org) y una dependencia con OpenOffice.org ejecutado como servidor para preparar el indexado de los contenidos y la exportación en pdf.

Hay dos licencias: la libre (comunidad) y la de pago con la diferencia que la última añade unas cuantas funcionalidades más entre las que se encuentran la integración con Otlook y con Office de Microsoft amén de soporte telefónico.

La comunidad estudia la posibilidad de integrarlo con OpenOffice.org.

Los documentos se pueden buscar por carpetas, etiquetas, propietario, fecha de creación, contenido (excepto en documentos escaneados) y un largo etcétera.

Mi socio, lego en informática, dice que es fácil y divertido de utilizar.»

Google Summer of Code 2009 !

En su historia, el Google Summer of Code ha reunido a cerca de 2,500 estudiantes alrededor de más de 180 proyectos de software libre para crear millones de líneas de código. Ya está abierta la nueva edición 2009 🙂

Al igual que otros años, los estudiante que contribuyan con éxito al proyecto recibirán un premio de $4.500. Cada estudiante tendrá 3 meses para terminar su propuesta.

El programa Google Summer of Code está diseñado para alentar a la participación de estudiantes en el desarrollo de software libre. Empezando en 2005, el programa tiene varios objetivos:

  • Inspirar a desarrolladores jóvenes a iniciar su participación en el desarrollo de software libre.
  • Proveer a estudiantes de Ingenierías Informáticas y carreras relacionadas la oportunidad de trabajar con algo relacionado con sus estudios durante el verano.
  • Proporcionar a los estudiantes una visión más amplia a escenarios de desarrollo de software del mundo real (p.ej., desarrollo en equipos distribuidos, cuestiones acerca de licencias de software, protocolo en listas de correo…).
  • Crear más software libre para el beneficio de todos.
  • Ayudar a los proyectos de software libre a identificar e introducir a nuevos desarrolladores.

Google aceptará peticiones de proyectos de software libre desde el 9 hasta el 13 de Marzo. Las solicitudes de estudiantes se realizan entre el 23 de Marzo y el 3 de Abril de 2009.

Más detalles sobre los requisitos para participar, incluyendo como solicitarlo y más acerca de la tan deseada camiseta 😉 en: http://code.google.com/soc/ (ojo, hasta la FOSDEM no se hará público del todo; este post es porque la organización del SoC’09 ha pedido que extendamos la noticia desde ya)