¿Qué software podría utilizar para configurar un proxy inverso que envíe archivos mientras se almacena en caché?

¿Qué software podría utilizar para configurar un proxy inverso que envíe archivos mientras se almacena en caché?

Necesito configurar un proxy inverso HTTP que pueda almacenar en caché las solicitudes en el servidor ascendente.

El servidor ascendente sólo sirve archivos estáticos.

El problema al que me enfrento es que necesito un proxy que sea capaz de iniciar el primer byte lo antes posible (no puede esperar a que se almacene toda la solicitud en el búfer) mientras sigo almacenando en caché. Esto se debe a que mis archivos pueden ser bastante grandes (unos pocos cientos de megabytes), pero el requisito de la aplicación es tener tiempos de respuesta rápidos.

Intenté usar nginx pero cuando desactivo proxy_buffering deja de almacenar en caché.

¿Existe algún proyecto de código abierto bien probado y ampliamente disponible que pueda hacer esto? ¿Barniz? ¿Calamar? ¿HAProxy?

Respuesta1

El barniz será bueno para el trabajo:

sub vcl_backend_response {

    # ... 

    # Large static files are delivered directly to the end-user without
    # waiting for Varnish to fully read the file first.
    # Varnish 4 fully supports Streaming, so use streaming here to avoid locking.
    if (bereq.url ~ "^[^?]*\.(mp[34]|rar|rpm|tar|tgz|gz|wav|zip|bz2|xz|7z|avi|mov|ogm|mpe?g|mk[av]|webm)(\?.*)?$") {
        unset beresp.http.set-cookie;
        set beresp.do_stream = true;  
        set beresp.do_gzip = false;   # Don't try to compress it for storage
    }

    # ...

}

Respuesta2

Puede configurar dos servidores nginx, uno con proxy_buffering habilitado y el siguiente que almacenará en caché las respuestas desde el nivel ascendente.

información relacionada