GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So beheben Sie das 504-Gateway-Timeout in Nginx Server

Ich verwende NGINX eine Menge. Ich habe kürzlich ein Node.js bereitgestellt Webanwendung mit NGINX als Reverse-Proxy-Server dafür. Eines der Hauptmerkmale der Anwendung ist die Unterstützung für Datenimporte mit Excel-Vorlagen. Es dauerte jedoch nicht lange, bis Benutzer, die umfangreiche Dateien hochluden, ein 504-Gateway-Timeout erhielten Fehler von NGINX .

[Das könnte Ihnen auch gefallen:Fix Nginx Error:413 Request Entity Too Large ]

Bekommst du den gleichen Fehler? Keine Sorge, ich habe dich abgedeckt. In diesem Artikel zeige ich, wie man das 504 Gateway Timeout behebt Fehler, indem Sie das Anforderungs-Timeout in NGINX erhöhen Webserver.

Anforderungs-Timeout in NGINX für einen Proxy-Server erhöhen

Wenn Sie NGINX verwenden als Reverse-Proxy für einen Anwendungsserver wie Node.js oder ein Webserver wie Apache oder Gunicorn , dann können Sie das Anfrage-Timeout erhöhen, indem Sie die folgenden Parameter entweder in der http , oder Server , oder Standort Richtlinie.

Das Timeout wird in Sekunden angegeben und stellt sicher, dass Sie Timeout-Werte festlegen müssen, die für Ihre Umgebung effektiv und effizient funktionieren.

proxy_connect_timeout 75;
proxy_send_timeout 600;
proxy_read_timeout 600;

Aus den Namen der Direktiven lässt sich leicht erkennen, welches Timeout sie definieren. Das proxy_connect_timeout Direktive gibt ein Timeout für das Herstellen einer Verbindung mit einem Proxy-Server an. Laut der offiziellen NGINX-Dokumentation sollte der Wert 75 nicht überschreiten Sekunden.

Die nächste Direktive proxy_send_timeout definiert ein Timeout für die Übermittlung einer Anfrage an den Proxy-Server. Die letzte Direktive proxy_read_timeout setzt eine Zeitüberschreitung für das Lesen einer Antwort vom Proxy-Server.

Nachdem Sie die obigen Anweisungen ein wenig verstanden haben, können Sie dies wie gezeigt konfigurieren. Im http Kontext können Sie sie in der Hauptkonfigurationsdatei von NGINX unter /etc/nginx/nginx.conf festlegen .

http{
....
	proxy_read_timeout 600;
	proxy_connect_timeout 600;
	proxy_send_timeout 600;
....
In the server context, you can define them in a server block file for your application for example /etc/nginx/conf.d/example.com.conf:
server{
....
             proxy_read_timeout 600;
	 proxy_connect_timeout 600;
	 proxy_send_timeout 600;

             location  /  {
                try_files $uri $uri/ /index.html =404 =403 =500;
          }
          location  /api  {
                proxy_pass http://127.0.0.1:5000;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                
       }
}

In einem Standortblock würden sie so aussehen:

server{
....
             location  /  {
                try_files $uri $uri/ /index.html =404 =403 =500;
          }
          location  /api  {
                proxy_pass http://127.0.0.1:5000;
                proxy_read_timeout 600;
	        proxy_connect_timeout 600;
	        proxy_send_timeout 600;

               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

Speichern Sie die Datei und schließen Sie sie.

Um die letzten Änderungen zu übernehmen, müssen Sie NGINX neu starten Dienst.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Anforderungs-Timeout in NGINX für FastCGI erhöhen

Für ein FastCGI Server wie PHP-FPM , können Sie die folgende Direktive entweder in der http , oder Server , oder Standort :

fastcgi_connect_timeout 75;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;

An einem Ort Block für die Verarbeitung von PHP-Dateien, können Sie diese wie folgt definieren:

location ~ .php$ {
	fastcgi_pass unix:/run/lib/php7.4-fpm.sock;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
	fastcgi_connect_timeout 75;
            fastcgi_send_timeout 600;
            fastcgi_read_timeout 600;
}

Vergessen Sie nicht, NGINX neu zu starten Dienst nach Änderungen:

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Hinweis :Möglicherweise müssen Sie auch einige Konfigurationsänderungen in der php.ini vornehmen und PHP-FPM Pool-Konfigurationsdateien, insbesondere auf die max_execution_time und request_terminate_timeout Anweisungen.

Das ist es! In diesem Artikel haben wir uns angesehen, wie das Zeitlimit für Anfragen in NGINX erhöht werden kann um das 504-Gateway-Timeout zu lösen Error. Weitere Informationen finden Sie in der NGINX-Dokumentation. Für Kommentare erreichen Sie uns über das Feedback-Formular unten.


Linux
  1. So leiten Sie HTTP zu HTTPS in Nginx um

  2. So installieren Sie Nginx unter Ubuntu 20.04

  3. So installieren Sie Nginx unter CentOS 8

  4. nginx 504-Gateway-Timeout

  5. Wie simuliere ich das Zeitlimit für die Antwort des DNS-Servers?

So installieren Sie NGINX unter Ubuntu 20.04

So installieren Sie Nginx unter CentOS 7

So installieren Sie Nginx auf Debian 8.2 Cloud Server

So konfigurieren Sie NGINX auf einem CentOS 7-Server

So richten Sie den Nginx-Cache auf dem LEMP-Server ein

So verstecken Sie Ihre NGINX-Serverversion.