So passen Sie Reverse-Proxy-Timeouts an große Foto- und Video-Uploads an

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Legen Sie Proxy-Timeouts anhand des langsamsten legitimen Uploads fest, den Sie akzeptieren, und planen Sie einen Puffer ein. Anwendung und vorgelagerter Proxy sollten mindestens ebenso großzügig konfiguriert sein. Beheben Sie nicht jeden fehlgeschlagenen Upload, indem Sie ein unbegrenztes Timeout wählen.

Ein großes Foto oder Video kann fehlschlagen, während dieselbe App ansonsten normal funktioniert, weil der Request-Body, die vorgelagerte Verarbeitung oder die Antwort ein anderes Limit überschreitet. Erfassen Sie zunächst den Statuscode, die verstrichene Zeit, die Dateigröße und das Proxy-Log. Diese Beobachtungen unterscheiden eine Ablehnung aufgrund der Body-Größe von einem Idle-Timeout, einem Backend-Timeout oder einem Verbindungsabbruch durch den Client.

Ermitteln Sie die Phase, in der der Upload endet

Wiederholen Sie den Vorgang mit einer bekannten Datei und achten Sie darauf, ob der Fehler während der Übertragung, nachdem der Fortschrittsbalken 100 Prozent erreicht hat, oder während der Medienverarbeitung durch den Server auftritt. Jede Phase entspricht einer anderen Verbindung und einem anderen Timeout.

Ein konsistenter Fehler bei derselben Byte-Anzahl deutet auf ein Limit für die Body-Größe hin; ein Fehler nach demselben Leerlaufintervall deutet auf ein Timeout hin. Ein Gateway-Fehler nach Abschluss des Uploads weist auf die Wartezeit zwischen Proxy und Anwendung oder auf das eigene Verarbeitungslimit der Anwendung hin.

Lesen Sie die Zugriffs- und Fehlerprotokolle des Proxys gemeinsam mit den Anwendungsprotokollen. Wenn der Client die Verbindung zuerst geschlossen hat, hilft es nicht, nur das Proxy-Timeout zu erhöhen. Überprüfen Sie das Verhalten mobiler Apps im Hintergrund, die VPN-Stabilität und den Anfragepfad des Browsers.

Ermitteln Sie ein begründbares Timeout-Budget

Teilen Sie die größte akzeptierte Datei durch die langsamste unterstützte Upload-Geschwindigkeit, um die Übertragungszeit zu schätzen, und rechnen Sie zusätzlichen Spielraum für TLS, Pufferung und schwankenden Durchsatz ein. Verwenden Sie diesen Wert als Obergrenze für legitime Vorgänge, nicht als Versprechen, dass jede langsame Verbindung unbegrenzt offen bleiben sollte.

Unterscheiden Sie zwischen Gesamtdauer und Leerlaufdauer. Beispielsweise dokumentiert NGINX separate Proxy-Timeout-Direktiven, und einige messen den Abstand zwischen aufeinanderfolgenden Vorgängen statt der Dauer der gesamten Antwort.

Behalten Sie das Risiko von Denial-of-Service-Angriffen im Blick. Beschränken Sie Upload-Endpunkte durch Authentifizierung und Ratenbegrenzungen, bevor Sie die Verbindungsdauer wesentlich verlängern, und machen Sie die Administrationsoberfläche des Proxys nicht öffentlich zugänglich.

Stimmen Sie jede Ebene ab, ohne zu übersteuern

Setzen Sie die Größe des Request-Bodys auf den unterstützten Maximalwert der Anwendung oder darüber. Stimmen Sie anschließend Client-Body-, Upstream-Connect-, Upstream-Read- und Upstream-Send-Timeouts entsprechend der beobachteten Fehlerphase ab.

Prüfen Sie, ob ein vorgeschaltetes CDN, ein Tunnel, ein Load Balancer oder ein zweiter Reverse-Proxy ein kürzeres, unveränderliches Limit hat. Das effektive Limit ist das kleinste in der Kette, daher kann eine Änderung ausschließlich am internen Proxy ohne sichtbares Ergebnis bleiben.

Dokumentieren Sie Anwendungs-URLs und Proxy-Routen. Der ZimaSpace-Leitfaden zu Immich auf einer Netzwerkfreigabe hilft dabei, Fehler im Upload-Pfad von Latenzen und Ausfällen beim Einbinden des Speichers zu unterscheiden.

-15% OFF

Testen Sie langsame, große und unterbrochene Uploads erneut

Laden Sie die ursprünglich fehlschlagende Datei am ursprünglichen Standort und mit derselben Netzwerkgeschwindigkeit hoch. Als erfolgreich gilt der Vorgang erst, wenn der Upload abgeschlossen, die Datei von der Anwendung indiziert und das Asset abspielbar oder anzeigbar ist – nicht bereits bei einem HTTP-Erfolgscode.

Drosseln Sie eine Testverbindung auf die minimal unterstützte Geschwindigkeit und wiederholen Sie den Vorgang. Unterbrechen Sie anschließend absichtlich einen Upload. Temporäre Dateien und unvollständige Datenbankeinträge sollten entsprechend dem Verhalten der Anwendung bereinigt werden.

Erhöhen Sie Timeouts nicht weiter, wenn die Protokolle einen Backend-Absturz, einen Speicherfehler oder ein festes Limit des vorgeschalteten Anbieters zeigen. Setzen Sie überhöhte Werte zurück, beheben Sie die fehlerhafte Ebene und behalten Sie das kleinste Timeout bei, das die gemessene Arbeitslast zuverlässig abdeckt.

FAQ

Sollten alle Proxy-Timeouts denselben Wert verwenden? Nein. Verbindungsaufbau, das Lesen des Client-Bodys, das Warten auf die Upstream-Antwort und das Senden an den Client schützen unterschiedliche Phasen.

Warum funktioniert ein kleines Foto, während ein Video fehlschlägt? Das Video überschreitet möglicherweise einen Schwellenwert für die Body-Größe, dauert länger als ein Idle-Limit oder löst eine längere serverseitige Verarbeitung aus. Protokolle und der Zeitpunkt des Fehlers zeigen, welcher Fall vorliegt.

Support & Tipps

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.