Nginx sagt immer wieder client intended to send too large body
. Googeln und RTM haben mich darauf hingewiesen client_max_body_size
. Ich habe es sowohl 200m
im nginx.conf
als auch im vhost conf
neu gestarteten Nginx ein paar Mal eingestellt, aber ich erhalte immer noch die Fehlermeldung.
Habe ich etwas übersehen? Das Backend ist php-fpm
( max_post_size
und max_upload_file_size
wird entsprechend eingestellt).
client_max_body_size
in demhttp
Abschnitt hat der erwartete Effekt mit Nginx Version 1.14.1Antworten:
Nach der Nginx-Dokumentation können Sie client_max_body_size 20m (oder einen beliebigen Wert) im folgenden Kontext festlegen:
quelle
http
oderlocation
Einstellen fehl . Funktioniert aufserver
Stufe.Große NGINX-Uploads funktionieren schließlich erfolgreich auf gehosteten WordPress-Sites (gemäß den Vorschlägen von nembleton & rjha94).
Ich dachte, es könnte für jemanden hilfreich sein, wenn ich seinen Vorschlägen eine kleine Klarstellung hinzufügen würde. Stellen Sie zunächst sicher, dass Sie Ihre erhöhte Upload-Direktive in ALLE DREI separaten Definitionsblöcke (Server, Standort und http) aufgenommen haben. Jeder sollte einen eigenen Zeileneintrag haben. Das Ergebnis wird ungefähr so aussehen (wobei das ... andere Zeilen im Definitionsblock widerspiegelt):
(In meinem ISPconfig 3-Setup befindet sich dieser Block in der Datei /etc/nginx/nginx.conf.)
(In meinem ISPconfig 3-Setup befinden sich diese Blöcke in der Datei /etc/nginx/conf.d/default.conf.)
Stellen Sie außerdem sicher, dass die php.ini-Datei Ihres Servers mit diesen NGINX-Einstellungen übereinstimmt. In meinem Fall habe ich die Einstellung im Abschnitt File_Uploads von php.ini wie folgt geändert:
Hinweis: Wenn Sie ein ISPconfig 3-Setup verwalten (mein Setup ist unter CentOS 6.3 gemäß The Perfect Server ), müssen Sie diese Einträge in mehreren separaten Dateien verwalten. Wenn Ihre Konfiguration der im schrittweisen Setup ähnelt, befinden sich die zu ändernden NGINX-Konfigurationsdateien hier:
Meine php.ini Datei befand sich hier:
Ich habe weiterhin den http {} -Block in der Datei nginx.conf übersehen. Offensichtlich hatte das Übersehen den Effekt, dass das Hochladen auf das Standardlimit von 1 Million beschränkt wurde. Nachdem Sie die zugehörigen Änderungen vorgenommen haben, möchten Sie auch sicherstellen, dass Ihre NGINX- und PHP FastCGI Process Manager-Dienste (PHP-FPM) neu gestartet werden. In der obigen Konfiguration verwende ich die folgenden Befehle:
quelle
/etc/init.d/nginx reload
stattdessen verwenden. Dies hat zusätzliche Vorteile wie "Wenn die Konfiguration falsch ist". NginX funktioniert nicht mehr.nginx -t
(testet die Syntax der Konfigurationsdatei) und dannnginx -s reload
(führt das eigentliche Neuladen durch) zu verwenden.Ab März 2016 stieß ich auf dieses Problem, als ich versuchte, json über https zu POSTEN (von Python-Anfragen, nicht dass es wichtig wäre).
Der Trick besteht darin, "client_max_body_size 200M" zu setzen. an mindestens zwei Stellen
http {}
undserver {}
:1. das
http
Verzeichnis/etc/nginx/nginx.conf
2. das
server
Verzeichnis in Ihrem vhost./etc/nginx/sites-available/mysite.com
für diejenigen, die keine vhosts haben, wahrscheinlich Ihre nginx.conf oder im selben Verzeichnis wie sie.3. das
location /
Verzeichnis an der gleichen Stelle wie 2./
, aber wenn es überhaupt nicht funktioniert, würde ich empfehlen, dies anzuwenden/
und dann, sobald es funktioniert, spezifischer zu sein.Denken Sie daran - wenn Sie SSL haben, dass benötigen Sie die oben für die SSL zu setzen
server
undlocation
zu, wo immer das auch sein mag ( im Idealfall die gleiche wie 2. ). Ich habe festgestellt, dass nginx die Verbindung vor der Umleitung tatsächlich trennt, wenn Ihr Client versucht, auf http hochzuladen, und Sie erwarten, dass er 301 auf https erhält, da die Datei für den http-Server zu groß ist in beiden .Jüngste Kommentare deuten darauf hin, dass es ein Problem mit SSL mit neueren Nginx-Versionen gibt, aber ich bin auf 1.4.6 und alles ist gut :)
quelle
client_max_body_size
wird im Abschnitt berücksichtigt,http
ohne dass es irgendwo anders hinzugefügt werden muss.Sie müssen folgende Änderungen vornehmen:
Update
php.ini
(Finden Sie den richtigen INI - Datei ausphpinfo();
) und erhöhenpost_max_size
undupload_max_filesize
zu Größe , die Sie wollen:Update Nginx Einstellungen für Ihre Website und fügen Sie
client_max_body_size
Wert in Ihremlocation
,http
oderserver
Kontext.Starten Sie NginX und PHP-FPM neu:
HINWEIS: Manchmal (in meinem Fall fast jedes Mal) müssen Sie den
php-fpm
Prozess beenden , wenn er nicht ordnungsgemäß durch den Dienstbefehl aktualisiert wurde. Dazu können Sie eine Liste der Prozesse abrufen (ps -elf | grep php-fpm
) und nacheinander beenden (kill -9 12345
) oder den folgenden Befehl verwenden, um dies für Sie zu tun:quelle
Überprüfen Sie, ob Sie die Anweisung client_max_body_size innerhalb des http {} -Blocks und nicht innerhalb des location {} -Blocks festlegen. Ich habe es in http {} Block gesetzt und es funktioniert
quelle
Jemand korrigiert mich, wenn dies schlecht ist, aber ich möchte alles so weit wie möglich sperren. Wenn Sie nur ein Ziel für Uploads haben (wie es normalerweise der Fall ist), zielen Sie einfach auf Ihre Änderungen an dieser einen Datei. Dies funktioniert für mich auf dem Ubuntu Nginx-Extras Mainline 1.7+ Paket:
quelle
Ich hatte kürzlich ein ähnliches Problem und fand heraus, dass
client_max_body_size 0;
dies ein solches Problem lösen kann. Dadurch wird client_max_body_size festgelegt auf keine Begrenzung gesetzt. Die beste Vorgehensweise besteht jedoch darin, Ihren Code zu verbessern, sodass Sie dieses Limit nicht erhöhen müssen.quelle
Angenommen, Sie haben bereits client_max_body_size und verschiedene PHP-Einstellungen (upload_max_filesize / post_max_size usw.) in den anderen Antworten festgelegt und dann NGINX und PHP ohne Ergebnis neu gestartet oder neu geladen ...
Nginx -T
Dadurch erhalten Sie ungelöste Fehler in Ihren NGINX-Konfigurationen. In meinem Fall hatte ich einen ganzen Tag lang mit dem 413-Fehler zu kämpfen, bevor mir klar wurde, dass einige andere ungelöste SSL-Fehler in der NGINX-Konfiguration (falscher Pfad für Zertifikate) korrigiert werden mussten. Nachdem ich die ungelösten Probleme behoben hatte, die ich von 'nginx -T' erhalten hatte, lud ich NGINX und EUREKA neu !! Das hat es behoben.
quelle
Ich richte einen Entwicklungsserver ein, um damit zu spielen, der unseren veralteten Live- Server widerspiegelt. Ich habe The Perfect Server verwendet - Ubuntu 14.04 (Nginx, BIND, MySQL, PHP, Postfix, Dovecot und ISPConfig 3).
Nachdem ich das gleiche Problem festgestellt hatte, stieß ich auf diesen Beitrag und nichts funktionierte. Ich habe den Wert in jeder empfohlenen Datei geändert (nginx.conf, ispconfig.vhost, / sites-available / default usw.)
Schließlich war es der Trick,
client_max_body_size
meine zu ändern/etc/nginx/sites-available/apps.vhost
und Nginx neu zu starten. Hoffentlich hilft es jemand anderem.quelle
Ich habe das gleiche Problem, aber ich fand, dass es nichts mit Nginx zu tun hat. Ich verwende nodejs als Backend-Server, verwende nginx als Reverse-Proxy, 413-Code wird vom Node-Server ausgelöst. Knoten verwenden Koa Parsen Sie den Körper. Koa begrenzen die urlencodierte Länge.
Wenn Sie formLimit auf größer setzen, kann dieses Problem behoben werden.
quelle
Hatte das gleiche Problem wie das
client_max_body_size
Richtlinie ignoriert wurde.Mein dummer Fehler war, dass ich eine Datei hineingelegt habe,
/etc/nginx/conf.d
die nicht mit endete.conf
. Nginx lädt diese standardmäßig nicht.quelle
Wenn Sie die Windows-Version nginx verwenden, können Sie versuchen, den gesamten nginx-Prozess abzubrechen und neu zu starten, um zu sehen. Ich bin auf dasselbe Problem in meiner Umgebung gestoßen, habe es jedoch mit dieser Lösung behoben.
quelle
tasklist /fi "imagename eq nginx.exe"