キャッシュしながらファイルを送信するリバース プロキシを設定するには、どのソフトウェアを使用できますか?

キャッシュしながらファイルを送信するリバース プロキシを設定するには、どのソフトウェアを使用できますか?

アップストリーム サーバーへのリクエストをキャッシュできる 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

2 つの nginx サーバーを設定できます。1 つは proxy_buffering を有効にし、もう 1 つはアップストリームからの応答をキャッシュします。

関連情報