"413 Request Entity Too Large" in Nginx mit gesetztem Wert für "client_max_body_size"

54

Ich lade eine 26-GB-Datei hoch, erhalte jedoch:

413 Request Entity Too Large

Ich weiß, das hängt damit zusammen client_max_body_size, also habe ich diesen Parameter auf gesetzt 30000M.

  location /supercap {
    root  /media/ss/synology_office/server_Seq-Cap/;
    index index.html;
    proxy_pass  http://api/supercap;
  }

  location /supercap/pipe {
    client_max_body_size 30000M;
    client_body_buffer_size 200000k;
    proxy_pass  http://api/supercap/pipe;
    client_body_temp_path /media/ss/synology_office/server_Seq-Cap/tmp_nginx;
  }

Aber ich erhalte immer noch diese Fehlermeldung, wenn die gesamte Datei hochgeladen wurde.

user2979409
quelle

Antworten:

69

Ändern Sie die NGINX-Konfigurationsdatei

sudo nano /etc/nginx/nginx.conf

Suchen Sie für diese Variable: client_max_body_size. Wenn Sie es finden, vergrößern Sie es einfach auf beispielsweise 100 MB. Wenn es nicht vorhanden ist, können Sie es innerhalb und am Ende von http hinzufügen

client_max_body_size 100M;

Starten Sie nginx neu, um die Änderungen zu übernehmen.

sudo service nginx restart

Ändern Sie die Datei PHP.ini für Upload-Limits

Es ist nicht für alle Konfigurationen erforderlich, aber möglicherweise müssen Sie auch die Einstellungen für den PHP-Upload ändern, um sicherzustellen, dass nichts durch PHP-Konfigurationen über die Grenzen hinausgeht.

Wenn Sie PHP5-FPM verwenden, verwenden Sie den folgenden Befehl:

sudo nano /etc/php5/fpm/php.ini

Wenn Sie PHP7.0-FPM verwenden, verwenden Sie den folgenden Befehl:

sudo nano /etc/php/7.0/fpm/php.ini

Nun finden Sie nacheinander die folgenden Anweisungen

upload_max_filesize
post_max_size

und erhöhen Sie das Limit auf 100M. Standardmäßig sind dies 8M und 2M.

upload_max_filesize = 100M
post_max_size = 100M

Speichern Sie es abschließend und starten Sie PHP neu.

PHP5-FPM-Benutzer verwenden diese,

sudo service php5-fpm restart

PHP7.0-FPM-Benutzer verwenden diese,

sudo service php7.0-fpm restart

Es wird gut funktionieren !!!

Sukhjinder Singh
quelle
1
warum 100Mb für client_max_body_size in nginx.conf?
User2979409
Sie können jeden Wert entsprechend Ihren Anforderungen setzen, aber 100
MB
aber ich lade bis zu 30 GB Dateien hoch.
user2979409
Finden Sie eine Datei von maximaler Größe und erlauben Sie es mehr als diese Datei
Sukhjinder Singh
Warum funktioniert client_max_body_size in meinem / Standort nicht?
User2979409
9

Wenn Sie Dateien dieser Größe hochladen, sollten Sie die Überprüfung der Körpergröße wahrscheinlich ganz deaktivieren:

client_max_body_size 0;
Devius
quelle
3

Ich bin mir nicht sicher, warum Sie http verwenden, um so viele Daten zu übertragen. Ich neige dazu, meine großen Transfers über SSH zu tätigen

//such as:
tar cjf - /path/to/stuff | ssh user@remote-host "cd /path/to/remote/stuff;tar xjf -"

... was mir eine bzip-komprimierte Übertragung gibt. Aber wenn ich eine wiederkehrende Übertragung durchführen müsste, könnte ich sftp, lftp oder sogar rsync verwenden. Jeder von ihnen (oder ihre Derivate oder Geschwister) ist in der Lage zu

  1. auf Wunsch einen verschlüsselten Kanal verwenden,
  2. Wiederaufnahme einer unterbrochenen Übertragung und
  3. Komprimieren der Übertragung

Nur eine davon ist eine Option für Sie, wenn Sie versuchen, über http hochzuladen (nämlich Nummer 1, wenn Sie sich auf https befinden).

Ich hoffe, Sie werden eine der oben genannten oder einige andere Alternativen untersuchen.

Matt Murphy
quelle
Das hat nichts mit der Frage zu tun.
Zenklys
1
Es ist nur da, weil der Typ Blueray-Dateien über http überträgt. Ohne nähere Informationen darüber zu haben, warum jemand dies tun möchte, ist es meiner Meinung nach am besten, wenn der Fragesteller die Frage nicht erfolgreich beantwortet. Ich erkenne an, dass meine Unkenntnis dieser Details ein Problem ist.
Matt Murphy