Problem: Nginx Upstream Verbindungsfehler
Der Fehler "Nginx upstream prematurely closed connection while reading response header from upstream" tritt auf, wenn Nginx keine vollständige Antwort von einem Upstream-Server erhalten kann. Dieses Problem kann Webanwendungen und -dienste unterbrechen. Es führt oft zu unvollständigen oder fehlgeschlagenen Anfragen, was die Leistung und Zuverlässigkeit des Systems beeinträchtigt.
Lösung: Anpassung der Nginx-Konfiguration
Erhöhung der Timeout-Einstellungen
Um den Fehler "Upstream Prematurely Closed Connection" zu beheben, können Sie die Timeout-Einstellungen in Ihrer Nginx-Konfiguration anpassen:
- Ändern Sie proxy_read_timeout: Diese Einstellung bestimmt, wie lange Nginx auf Daten vom Upstream-Server wartet. Erhöhen Sie diesen Wert, um mehr Zeit für große Antworten zu ermöglichen:
proxy_read_timeout 300s;
- Passen Sie proxy_connect_timeout an: Diese Einstellung legt fest, wie lange Nginx auf den Aufbau einer Verbindung zum Upstream-Server wartet. Erhöhen Sie diesen Wert, wenn Ihr Upstream-Server länger braucht, um zu antworten:
proxy_connect_timeout 75s;
- Setzen Sie send_timeout: Diese Einstellung gibt an, wie lange Nginx wartet, bis der Client Daten akzeptiert. Passen Sie diesen Wert entsprechend den Anforderungen Ihrer Anwendung an:
send_timeout 60s;
Tipp: Überwachen und anpassen
Nachdem Sie Änderungen an den Timeout-Einstellungen vorgenommen haben, überwachen Sie die Leistung Ihres Servers und passen Sie die Werte bei Bedarf an. Beginnen Sie mit konservativen Erhöhungen und optimieren Sie schrittweise basierend auf Ihren spezifischen Anforderungen und Verkehrsmustern.
Optimierung der Puffer-Einstellungen
Die Optimierung der Puffer-Einstellungen kann dazu beitragen, den Fehler "Upstream Prematurely Closed Connection" zu verhindern:
- Konfigurieren Sie proxy_buffers: Diese Einstellung bestimmt die Anzahl und Größe der Puffer zum Lesen der Antwort vom Upstream-Server. Passen Sie diese Werte basierend auf den Ressourcen Ihres Servers und typischen Antwortgrößen an:
proxy_buffers 8 16k;
- Passen Sie proxy_buffer_size an: Diese Einstellung legt die Größe des Puffers fest, der zum Lesen des ersten Teils der Antwort vom Upstream-Server verwendet wird. Erhöhen Sie diesen Wert für größere Header:
proxy_buffer_size 32k;
- Optimieren Sie large_client_header_buffers: Diese Einstellung steuert die maximale Anzahl und Größe der Puffer, die zum Lesen großer Client-Anfrage-Header verwendet werden. Passen Sie diese Werte an, wenn Sie mit Anfragen umgehen, die große Header enthalten:
large_client_header_buffers 4 32k;
Durch die Anpassung dieser Nginx-Konfigurationseinstellungen können Sie oft den Fehler "Upstream Prematurely Closed Connection" beheben und die Fähigkeit Ihres Servers verbessern, große Antworten und komplexe Anfragen zu verarbeiten.