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

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

AddDefaultCharset off
Order deny,allow
Deny from all
Allow from localhost # o en su lugar, la IP pública

3) Definir las redirecciones que nos interesen:

$ sudo vi /etc/apache2/sites-enabled/000-default
ProxyPass /carpeta/ http://B/carpeta/
ProxyHTMLURLMap http://B/carpeta /carpeta
#

ProxyPassReverse /
SetOutputFilter proxy-html
ProxyHTMLExtended On

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

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.»

Qué es un registro NXD y por qué debe interesarte

Acabas de tener LaMejorIdeaDelMundo ™ sobre un nuevo servicio web. Y ya se te ha ocurrido hasta el mejor nombre de dominio del mundo.com ; ¿qué es lo primero que vas a hacer? Sí, lo sé, comprobar en tu navegador la existencia de dicho dominio. Si alguien ya lo tiene comprado, fin de la historia, habrá que buscar otro. Y si no, pues no pasa nada, irás al whois o a alguna otra web a intentar comprarlo y comprobar que no exista. Perfecto, ¿no? ¡NO! Con el primer paso (comprobar en la barra de direcciones del navegador), acabas de pifiarla. Es una de las acciones más ‘peligrosas’ que puedes hacer para comprar un dominio. Los proveedores de acceso a Internet (ISP) venden las tablas de registros NXD. ¿Pero qué demonios es un registro NXD? ¿Y por qué afecta a mi búsqueda del mejor nombre de dominio para mi nueva web? Los datos Non-eXistent Domain (NXD) son una respuesta de un servidor DNS al ordenador que le pide la resolución de una IP a partir de un nombre de dominio no existente. Ver figura adjunta. ¿No te crees que los ISP vendan esos datos? Pues no hay problema, sigue buscando tus nombres libres jugando con la barra del navegador. Así, harás felices a los vendedores de tablas NXD, tal y como atestigua el autor del blog domaintools.com, y a las empresas que compran los dominios NXD automáticamente, tan pronto aparecen.

World Plone Day 2008

Eneko Astigarraga nos cuenta: «El próximo día 7 de noviembre, en 59 ciudades en 31 países de todo el mundo se celebran actos para dar a conocer el CMS de software libre Plone y reforzar su comunidad. Hay actividades paralelas por los cinco continentes, CodeSyntax se apunta a dicha celebración internacional organizando en Eibar un evento dentro del World Plone Day 2008 .

Plone es un sistema de gestión de contenidos (CMS -Content Management System) para portales web basado en software libre y de código abierto. Es un CMS muy extendido en todo el mundo y que ha recibido numeroso premios internacionales. En cuanto a su aplicación, cuenta con una fuerte implantación en la e-administración, la educación, las ONGs y las empresas. Podemos ver ejemplos cercanos en el Ayuntamiento de Amorebieta (www.amorebieta-etxano.net), la Universidad de Mondragón o la ONG Oxfam.

Las charlas organizadas pretenden explicar en qué consiste Plone, detallando sus características y mostrando ejemplos de aplicación reales en diferentes ámbitos.

La jornada se iniciará a las 9 de la mañana en las oficinas de CodeSyntax en el polígono de Azitain, Eibar

Si te interesa acudir, tienes disponible información completa sobre la jornada. Puedes inscribirte aquí.