我可以使用哪种软件来设置在缓存时发送文件的反向代理?

我可以使用哪种软件来设置在缓存时发送文件的反向代理?

我需要设置一个 HTTP 反向代理,以便能够缓存对上游服务器的请求。

上游服务器仅提供静态文件。

我面临的问题是,我需要一个能够尽快启动第一个字节的代理(它不能等待整个请求缓冲)同时仍然进行缓存。这是因为我的文件可能很大(几百兆字节),但应用程序要求具有快速响应时间。

我尝试使用 nginx,但是当我禁用 proxy_buffering 时,它完全停止缓存。

有没有可以广泛使用、经过良好测试的开源项目可以做到这一点?Varnish?Squid?HAProxy?

答案1

清漆非常适合这项工作:

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
    }

    # ...

}

答案2

您可以设置两个 nginx 服务器,一个启用 proxy_buffering,另一个缓存来自上游的响应。

相关内容