Welche Parameter in NGINX kann ich anpassen, um Timeouts für Clients oder Upstream-Server zu steuern?

Melden
  1. Timeouts für Clients
  2. Timeouts für Upstream-Server
  3. Sonstige relevante Timeout-Parameter
  4. Zusammenfassung

Timeouts für Clients

In NGINX gibt es verschiedene Parameter, mit denen die Timeout-Werte für Verbindungen zu Clients konfiguriert werden können. Diese Einstellungen beeinflussen, wie lange NGINX auf Daten von oder an den Client wartet, bevor die Verbindung unterbrochen wird. Ein wichtiger Parameter ist client_body_timeout, der definiert, wie lange NGINX wartet, bis die vollständigen Daten vom Client empfangen wurden. Wird dieser Zeitraum überschritten, wird die Verbindung geschlossen. Ähnlich steuert client_header_timeout, wie lange auf die vollständigen HTTP-Header vom Client gewartet wird. Sollte der Client nicht innerhalb dieses Zeitraums die Header senden, bricht NGINX die Verbindung ab. Außerdem definiert send_timeout die Zeitspanne, wie lange NGINX versucht, Daten an den Client zu senden, bevor die Verbindung getrennt wird. Dieser Parameter greift also auf den Versandpfad und beeinflusst, wie lange NGINX ohne Aktivität Daten an den Client sendet.

Timeouts für Upstream-Server

Wenn NGINX als Reverse Proxy oder Load Balancer eingesetzt wird, ist die Steuerung der Timeouts zum Upstream-Server (z. B. einem Backend-Webserver) essenziell, um Ressourcen nicht unnötig zu blockieren und eine schnelle Fehlererkennung zu ermöglichen. Der Parameter proxy_connect_timeout legt fest, wie lange NGINX beim Verbindungsaufbau zum Upstream-Server wartet. Wird der Upstream nicht in dieser Zeit erreichbar, wird die Verbindung abgebrochen. proxy_send_timeout bestimmt, wie lange NGINX auf das vollständige Senden der Anfrage an den Upstream-Server wartet. Falls der Upstream während des Sendens nicht antwortet, wird die Verbindung beendet. Ähnlich regelt proxy_read_timeout, wie lange auf eine Antwort vom Upstream-Server gewartet wird. Wenn also der Upstream länger als diese Zeitspanne keine Daten sendet, beendet NGINX die Verbindung. Diese drei Parameter sind maßgeblich für eine robuste Kommunikation mit den Backend-Servern. Weitere relevante Parameter für Upstreams sind keepalive_timeout für persistent Verbindungen und proxy_next_upstream_timeout für das Timeout beim Wechsel des Upstream-Servers.

Sonstige relevante Timeout-Parameter

Zusätzlich zu den spezifischen Client- und Upstream-Timeouts bietet NGINX noch weitere Timeout-Einstellungen, die indirekt Einfluss auf die Verbindungslaufzeiten nehmen können. keepalive_timeout steuert, wie lange eine gehaltene Verbindung (persistent connection) offen bleibt, ehe sie geschlossen wird, wodurch sich sowohl Client- als auch Upstream-Timeouts beeinflussen lassen. Ebenfalls relevant ist reset_timedout_connection, mit dem NGINX steuert, ob Verbindungen sofort nach Timeout zurückgesetzt werden. Für SSL-Verbindungen existiert darüber hinaus noch ssl_handshake_timeout, das die maximale Zeit für den SSL-Verbindungsaufbau definiert.

Zusammenfassung

Zusammenfassend steuern in NGINX vor allem client_body_timeout, client_header_timeout und send_timeout die Timeouts für die Client-Verbindung. Für Upstream-Server sind proxy_connect_timeout, proxy_send_timeout und proxy_read_timeout entscheidend. Weitere Parameter wie keepalive_timeout beeinflussen sowohl Client- als auch Upstream-Verbindungen. Durch eine passende Anpassung dieser Werte lässt sich das Verhalten von NGINX bei zeitkritischen Verbindungen gezielt steuern, um die Zuverlässigkeit und Performance des Servers zu optimieren.

0

Kommentare