Proxy HTTP de almacenamiento en caché de baja latencia con directorio de caché visible para el usuario

He estado buscando un proxy HTTP de almacenamiento en caché para Linux con las siguientes propiedades:

  • Independiente: Preferiría no tener que meterme con, por ejemplo, mi configuración existente de Apache o Squid.

  • Baja latencia: es decir, debe reenviar los datos a medida que se recuperan, sin esperar a que se descargue primero todo el archivo. Dicho esto, su rendimiento general no es motivo de especial preocupación; por lo general, solo tendrá como máximo uno o dos clientes, descargando archivos en el rango de 1 a 100 MB.

  • Almacenamiento en caché utilizando un formato que permite utilizar y/o modificar directamente los archivos almacenados en caché. Por ejemplo, http://example.com/a/b/file.txtpodría colocarse en <cachedir>/http/example.com/a/b/file.txt.

  • (Opcional) Un grado de configurabilidad para que, por ejemplo, todas www*.example.comlas URL se asignen al mismo directorio para evitar la duplicación de espejos. Un programa de Python que se puede modificar un poco también podría ser adecuado...

En realidad, no necesito modificar los encabezados o el contenido del archivo: el proxy se usará principalmente para compartir archivos de actualización de software en varias máquinas virtuales y máquinas físicas sin forzar la conexión a Internet innecesariamente.

Respuestas (2)

polipo

debería encajar a la perfección, con una salvedad.

Independiente: Preferiría no tener que meterme con, por ejemplo, mi configuración existente de Apache o Squid.

Simplemente instálelo (sin más dependencias que la biblioteca estándar) y configúrelo según sea necesario (probablemente querrá cambiar el puerto si ya tiene Squid escuchando en 8123, y querrá permitir clientes que no sean localhost . También dado su requisitos es posible que desee desactivar la escritura asíncrona .

Baja latencia: es decir, debe reenviar los datos a medida que se recuperan, sin esperar a que se descargue primero todo el archivo. Dicho esto, su rendimiento general no es motivo de especial preocupación; por lo general, solo tendrá como máximo uno o dos clientes, descargando archivos en el rango de 1 a 100 MB.

Controlar. (A diferencia de wwwoffle , que me gusta bastante pero almacena sistemáticamente las páginas hasta que se descargan por completo).

Almacenamiento en caché utilizando un formato que permite utilizar y/o modificar directamente los archivos almacenados en caché. Por ejemplo, http://example.com/a/b/file.txtpodría colocarse en <cachedir>/http/example.com/a/b/file.txt.

Cerca. Los proxies normalmente no se almacenan file.txten un archivo llamado file.txtporque las URL no encajan bien con la sintaxis del archivo: es posible que fooy foo/o foo/bary foo//barsirvan diferentes contenidos, por ejemplo. Polipo almacena un archivo por archivo, pero el nombre del archivo es el hash MD5 de la URL (codificado en Base64), en un directorio llamado host.

Además, el contenido del archivo incluye los encabezados. Si desea el contenido real, deberá eliminar los encabezados, por ejemplo, con sed -e '1,/^\r\?$/d'.

Menciono Polipo a pesar de estas limitaciones porque es probable que la mayoría de los proxies funcionen así, a menos que estén destinados a ser utilizados en configuraciones restringidas donde no pueden acceder fielmente a todas las páginas web.

(Opcional) Un grado de configurabilidad para que, por ejemplo, todas las URL de www*.example.com se asignen al mismo directorio para evitar la duplicación de espejos. Un programa de Python que se puede modificar un poco también podría ser adecuado...

Factible con URL redirigidos .

Ya llevo un tiempo usando Polipo, tanto como proxy como para servir archivos estáticos. No es perfecto, pero suficiente para la mayoría de mis usos...

Apuesto a que esto existe exactamente, pero por si acaso no es así:

CernVM-FS ( docs , github ) interpreta un sitio web fijo como un sistema de archivos con almacenamiento en caché a largo plazo. Si quisiera volver a acceder a él como un sitio web, podría activar un servidor HTTP local en ese directorio.

Esta solución no es independiente y maneja solo un sitio web, pero tal vez aún sea relevante.