Detaillierte Erläuterung der Nginx-Timeout-Konfiguration

Detaillierte Erläuterung der Nginx-Timeout-Konfiguration

Ich habe kürzlich in einem Projekt nginx und im Backend Java verwendet. Dabei stellte ich fest, dass die Verarbeitung einer Anfrage im Backend mehr als 1 Minute dauerte und der Statuscode der Anfrage „504 Gateway Time-out“ lautete.

Verstehen Sie alle Timeout-bezogenen Konfigurationen von nginx wie folgt:

Keepalive_Timeout

HTTP verfügt über einen KeepAlive-Modus, der dem Webserver mitteilt, die TCP-Verbindung nach der Verarbeitung einer Anfrage offen zu halten. Wenn andere Anfragen vom Client empfangen werden, verwendet der Server diese nicht geschlossene Verbindung, ohne eine weitere Verbindung herzustellen.

http keep-alive, jede Anfrage einer Webseite ist HTTP (Bilder, CSS usw.), und das Öffnen einer HTTP-Anfrage erfordert zuerst das Herstellen einer TCP-Verbindung. Wenn eine Seite für jede Anfrage eine TCP-Verbindung öffnen und schließen muss, ist das eine Verschwendung von Ressourcen. keepalive_timeout ist die Zeit, die die TCP-Verbindung bestehen bleibt, wenn eine HTTP-Anfrage abgeschlossen ist. Wenn zu diesem Zeitpunkt eine weitere HTTP-Anfrage eingeht, wird die TCP-Verbindung wiederverwendet. Wenn keine neue Anfrage eingeht, wird die TCP-Verbindung geschlossen.

Benutzer nginx;
Arbeiterprozesse 1;
 
Fehlerprotokoll /var/log/nginx/error.log warnen;
pid /var/run/nginx.pid;
 
 
Ereignisse {
  Arbeiterverbindungen 1024;
}
 
 
http {
  /etc/nginx/mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;
 
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';
 
  Zugriffsprotokoll /var/log/nginx/access.log Haupt;
 
  sendfile an;
  tcp_nopush ein;
  tcp_nodelay ein;
 
 
  KeepAlive-Timeout 65;
  Maximale Körpergröße des Clients: 8192 m.
 
  #gzip ein;
 
  #include /etc/nginx/conf.d/*.conf;
 
 
 
  Server {
 hören Sie 80 so_keepalive=30m::;
 hören Sie 443 Standard-SSL;
 
 SSL-Zertifikat /etc/nginx/ssl/server.crt;
 SSL-Zertifikatsschlüssel /etc/nginx/ssl/portalkey.key;
 #SSL-Passwortdatei /etc/nginx/ssl/ssl.pass;
 
 
    SSL-Sitzungszeitüberschreitung 5 Min.
    SSL-Protokolle SSLv2 SSLv3 TLSv1;
    ssl_ciphers HOCH:!aNULL:!MD5;
    ssl_prefer_server_ciphers ein;
 
 Standort / {
 Proxy_Request_Buffering aus;
 Proxy-Passwort http://127.0.0.1:8011/;
 Proxy_Verbindungs-Timeout 180;
    Proxy_Sendezeitüberschreitung 180;
    Proxy_Lese_Timeout 180;
    Sendezeitüberschreitung 180;
 }
 Standort /test1_url/ {
 Proxy-Passwort http://127.0.0.1:8008/;
 Proxy_Verbindungs-Timeout 180;
    Proxy_Sendezeitüberschreitung 180;
    Proxy_Lese_Timeout 180;
    Sendezeitüberschreitung 180;
 }
 Standort /test2_url/ {
 Proxy-Passwort http://127.0.0.1:3000/;
 Proxy_Verbindungs-Timeout 180;
    Proxy_Sendezeitüberschreitung 180;
    Proxy_Lese_Timeout 180;
    Sendezeitüberschreitung 180;
 }
  }
}

# Konfigurationsabschnitt: http, Standard 75 s

KeepAlive-Timeout 60;

  • send_timeout: Timeout für das Senden von Daten an den Client, standardmäßig 60 Sekunden. Wenn der Client innerhalb von 60 aufeinanderfolgenden Sekunden kein Byte empfängt, wird die Verbindung geschlossen.
  • proxy_connect_timeout: Das Verbindungstimeout zwischen nginx und dem Upstream-Server
  • proxy_read_timeout: nginx tritt beim Empfangen von Daten vom Upstream-Server eine Zeitüberschreitung auf, standardmäßig 60 Sekunden. Wenn innerhalb von 60 aufeinanderfolgenden Sekunden kein Byte empfangen wird, wird die Verbindung geschlossen.
  • proxy_send_timeout: nginx sendet Daten zum Upstream-Server-Timeout, standardmäßig 60 Sekunden. Wenn innerhalb von 60 aufeinanderfolgenden Sekunden kein Byte gesendet wird, wird die Verbindung geschlossen.

so_timeout:

Wenn ein Benutzer eine TCP-Verbindung mit einem Server öffnet --> es gibt für längere Zeit keinen Verkehr auf dieser Verbindung (so_keepalive-Timeout) --> der Server sendet ein Testpaket, um zu sehen, ob der Benutzer noch aktiv ist --> wenn keine Antwort auf das Testpaket erfolgt, wird die TCP-Verbindung geschlossen

so_keepalive=an|aus|[keepidle]:[keepintvl]:[keepcnt]
so_keepalive=30m::10
  setzt das Leerlauf-Timeout (TCP_KEEPIDLE) auf 30 Minuten, belässt das Prüfintervall (TCP_KEEPINTVL) auf seinem Systemstandard und setzt die Prüfanzahl (TCP_KEEPCNT) auf 10 Prüfungen.

Es kann nur einer der drei oben genannten Parameter verwendet werden und sie können nicht gleichzeitig verwendet werden, z. B. so_keepalive = on, so_keepalive = off oder so_keepalive = 30s:: (was bedeutet, dass 30 Sekunden lang ohne Datenpakete gewartet wird, bevor ein Erkennungspaket gesendet wird).

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Nginx-Timeout-Konfiguration
  • Lösung für das Nginx-Timeout beim Hochladen großer Dateien
  • Detaillierte Einführung in die Nginx-Timeout-Einstellungen
  • Detaillierte Erklärung zur Konfiguration des Timeouts im Nginx-Server
  • Detaillierte Erläuterung der Konfigurationsschritte für das Nginx-Timeout „keeplive_timeout“

<<:  Die 13 am häufigsten in Interviews gestellten Fragen zu Vue-Modifikatoren

>>:  So ändern Sie das ROOT-Passwort in MySql8.0 und höheren Versionen richtig

Artikel empfehlen

Zusammenfassung der Linux-Befehle zur Dateiverzeichnisverwaltung

Befehl „touch“ Es hat zwei Funktionen: Eine beste...

Wie MySQL implizite Standardwerte verarbeitet

Einige Studenten sagten, dass sie auf das Problem...

Wie verfolgt Vue Datenänderungen?

Inhaltsverzeichnis Hintergrund Beispiel Missverst...

Details zum JavaScript-Abschluss

Inhaltsverzeichnis 1. Was ist ein Abschluss? 2. D...

Tutorial zur Installation und Konfiguration von MySQL für Mac

In diesem Artikel finden Sie das MySQL-Installati...

CSS3-Analyse der Schritte zur Erstellung des Douyin-LOGO

Auch „Tik Tok“ erfreut sich großer Beliebtheit un...

PHP geplante Backup MySQL und mysqldump Syntax-Parameter detailliert

Lassen Sie uns zunächst einige gängige Anwendungs...

Detailliertes Tutorial zur Integration von Apache Tomcat mit dem IDEA-Editor

1. Laden Sie das komprimierte Tomcat-Paket von de...