Frage "413 Request Entity Too Large" in Nginx mit "client_max_body_size" gesetzt


Ich lade eine 26-GB-Datei hoch, aber ich bekomme:

413 Request Entity Too Large

Ich weiß, das hängt damit zusammen client_max_body_size, also habe ich diesen Parameter auf eingestellt 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 diesen Fehler, wenn die ganze Datei hochgeladen wurde.


34
2017-11-14 11:31


Ursprung




Antworten:


Ändern Sie die NGINX-Konfigurationsdatei

sudo nano /etc/nginx/nginx.conf

Suche nach dieser Variable: client_max_body_size. Wenn Sie es finden, erhöhen Sie einfach seine Größe zum Beispiel auf 100M. Wenn es nicht existiert, 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 PHP.ini-Datei für Upload-Limits

Es ist nicht für alle Konfigurationen erforderlich, aber Sie müssen möglicherweise auch die PHP-Upload-Einstellungen ändern, um sicherzustellen, dass php-Konfigurationen keine Einschränkungen zulassen.

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

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

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

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

Finden Sie nun nacheinander folgende Anweisungen

upload_max_filesize
post_max_size

und erhöhen Sie seine Grenze auf 100M, standardmäßig sind sie 8M und 2M.

upload_max_filesize = 100M
post_max_size = 100M

Zuletzt speichern Sie es und starten Sie PHP neu.

PHP5-FPM Benutzer verwenden dies,

sudo service php5-fpm restart

PHP7.0-FPM-Benutzer verwenden dies,

sudo service php7.0-fpm restart

Es wird gut funktionieren !!!


39
2017-11-14 11:59



Warum 100 MB für client_max_body_size in nginx.conf? - user2979409
Sie können jeden Wert nach Ihren Anforderungen setzen, aber 100 mb ist ausreichend - Sukhjinder Singh
aber ich lade bis zu 30 GB Dateien hoch. - user2979409
finde eine Datei mit maximaler Größe und erlaube ihr mehr als diese Datei - Sukhjinder Singh
Warum funktioniert client_max_body_size nicht in meinem / location? - user2979409


In Bezug, ich bin mir nicht sicher, warum Sie http verwenden, um so viele Daten zu übertragen. Ich tendiere dazu, meine großen Transfers über ssh zu machen

//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 fortsetzbare Übertragung machen müsste, könnte ich sftp, lftp, sogar rsync verwenden. Jeder von ihnen (oder deren Derivate oder Geschwister) ist dazu in der Lage

  1. Verwenden eines verschlüsselten Kanals, falls gewünscht
  2. Wiederaufnahme eines unterbrochenen Transfers und
  3. Komprimieren der Übertragung

Nur eine davon wäre eine Option für Sie, wenn Sie versuchen, über HTTP hochzuladen (nämlich # 1, wenn Sie auf https waren).

Ich hoffe, Sie werden in eine der oben genannten oder die anderen Alternativen schauen.


3
2018-05-17 17:40





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

client_max_body_size 0;

3
2018-03-08 11:14