Welche Software kann ich zum Einrichten eines Reverse-Proxys verwenden, der beim Zwischenspeichern Dateien sendet?

Welche Software kann ich zum Einrichten eines Reverse-Proxys verwenden, der beim Zwischenspeichern Dateien sendet?

Ich muss einen HTTP-Reverse-Proxy einrichten, der Anfragen an den Upstream-Server zwischenspeichern kann.

Der Upstream-Server stellt nur statische Dateien bereit.

Das Problem, mit dem ich konfrontiert bin, ist, dass ich einen Proxy benötige, der in der Lage ist, das erste Byte so schnell wie möglich zu starten (er kann nicht warten, bis die gesamte Anfrage gepuffert ist), während er noch zwischenspeichert. Das liegt daran, dass meine Dateien ziemlich groß sein können (ein paar hundert Megabyte), die App aber schnelle Reaktionszeiten benötigt.

Ich habe versucht, Nginx zu verwenden, aber wenn ich Proxy-Buffering deaktiviere, wird das Caching vollständig gestoppt.

Gibt es ein weithin verfügbares, gut getestetes Open-Source-Projekt, das dies kann? Varnish? Squid? HAProxy?

Antwort1

Lack eignet sich gut für diese Aufgabe:

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
    }

    # ...

}

Antwort2

Sie können zwei Nginx-Server einrichten, einen mit aktiviertem Proxy-Pufferungsvorgang und den nächsten, der Antworten vom Upstream zwischenspeichert.

verwandte Informationen