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.