NGINX-Timeout kann nicht geändert werden

NGINX-Timeout kann nicht geändert werden

Ich erhalte eine 504-Timeout-Meldung auf meinem Nginx-Server: 504 Gateway Time-out. Die Website ermöglicht Benutzern das Herunterladen benutzerdefinierter Datendateien. Die Site funktioniert unter den meisten Bedingungen einwandfrei und Benutzer können einige Dateien problemlos herunterladen. Das Problem besteht darin, dass die Datendateien nur auf Anforderung generiert werden. Wenn also komplexe Daten angefordert werden, benötigt das Python-Backend mehr als eine Minute, um die Datei zu generieren und den Download zu starten. Da innerhalb einer Minute keine Antwort erfolgt, gibt Nginx eine zurück 504 Gateway Time-out. Die Dateien selbst sind CSV-Dateien und nicht sehr groß, sodass die Downloads schnell sind, nachdem das Backend die Datei generiert hat, aber ich brauche eine Möglichkeit, Nginx länger warten zu lassen.

Ich suche nach einer Möglichkeit, das Nginx-Timeout von 1 Minute auf etwa 10 Minuten zu erhöhen.

Bisher habe ich versucht:

Ändern Sie die nginx.confDatei so, dass sie die folgenden Zeilen zwischen den http {}Klammern enthält

uwsgi_connect_timeout 75s;
proxy_connect_timeout 600;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;

Ich habe auch versucht, eine timeout.confDatei hinzuzufügen, /etc/nginx/conf.d/wie vorgeschlagen vonhttps://asdqwe.net/blog/solutions-504-gateway-timeout-nginx/:

proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600; 

Nach jeder Änderung habe ich den Server neu gestartet, aber das Timeout tritt immer noch nach 1 Minute auf. Dies wurde weiter getestet, indem curl -oauf dem Server ein ausgeführt wurde, um alle Probleme mit dem Dienstanbieter zu umgehen. Die Ausgabe war wie folgt.

$curl -o out-put-file.csv "./localhost/my/url"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   183   100   183   0    0       3      0  0:01:01  0:01:00  0:00:01    48

Und dieser Fehler wird in error.log geschrieben.

2018/03/26 09:55:15 [error] 10105#10105: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 142.1.2.3, server: localhost, request: "GET /my/url", upstream: "uwsgi://unix:/tmp/my-applacation.sock", host: "142.1.2.3"

Wenn ich meine Anwendung ohne Nginx ausführe und sie trotzdem ausführe, curl -odauert die Anforderung ziemlich lange (bis zu 8 Minuten, abhängig von den angeforderten Daten), wird aber ordnungsgemäß ohne Fehler oder Zeitüberschreitung abgeschlossen.


Beim Ausführen $ /usr/sbin/nginx -V 2>&1 | grep confwird angezeigt, dass sich die Konfigurationsdatei unter folgendem Pfad befindet:--conf-path=/etc/nginx/nginx.conf


Nginx-Version: nginx/1.12.2 und nginx/1.4.6 (Ubuntu)

Betriebssystemversion: Ubuntu 16.04.1 und Ubuntu 14.04.5 LTS


Bearbeiten:

Ich habe getestet, die Anzahl der Worker_Processes in der Konfigurationsdatei zu ändern, nur um sicherzustellen, dass Änderungen an anderen Dingen in der Konfigurationsdatei übernommen wurden, und tatsächlich ändert sich durch die Änderung dieser Zahl die Anzahl der Worker, sodass die Datei die richtige Datei ist und Änderungen von Nginx übernommen werden. Nur keine Änderungen an den Timeouts (oder vielleicht am gesamten HTTP-Abschnitt?). Ich habe auch getestet, die Timeouts auf 30 Sekunden einzustellen, aber sie laufen immer noch nach 1 Minute ab. Außerdem habe ich versucht, diese Einstellungen vorzunehmen, sites-enabled/my_siteaber ich habe immer noch die gleichen Ergebnisse.

Bearbeitung2:

Soweit ich das beurteilen kann, stelle ich die Werte entsprechend der Nginx-Dokumentation richtig ein. uwsgi_connect_timeout

ngx_http_proxy_module

Antwort1

Ich habe es gelöst!!

Das Problem stellte sich als mit uwsgi verbunden heraus, während ich

uwsgi_connect_timeout 75s;

was ich eigentlich einstellen musste war

uwsgi_read_timeout 600s;

verwandte Informationen