nginx n'arrête pas de dire client intended to send too large body
. Google et RTM m'ont indiqué client_max_body_size
. Je l'ai défini 200m
dans le nginx.conf
ainsi que dans le vhost conf
, redémarré Nginx plusieurs fois mais je reçois toujours le message d'erreur.
Ai-je oublié quelque chose? Le backend est php-fpm
( max_post_size
et max_upload_file_size
est défini en conséquence).
client_max_body_size
dans lahttp
section a l'effet attendu avec nginx version 1.14.1Réponses:
En suivant la documentation de nginx , vous pouvez définir client_max_body_size 20m (ou toute valeur dont vous avez besoin) dans le contexte suivant:
la source
http
ou deslocation
paramètres. Fonctionne lorsqu'il est réglé auserver
niveau. nginx / 1.4.4Les gros téléchargements NGINX fonctionnent avec succès sur les sites WordPress hébergés, enfin (selon les suggestions de nembleton et rjha94)
J'ai pensé que cela pourrait être utile pour quelqu'un, si j'apportais un petit éclaircissement à ses suggestions. Pour commencer, assurez-vous d'avoir inclus votre directive de téléchargement accrue dans TOUS LES TROIS blocs de définition distincts (serveur, emplacement et http). Chacun doit avoir une entrée de ligne distincte. Le résultat ressemblera à quelque chose comme ça (où le ... reflète d'autres lignes dans le bloc de définition):
(dans ma configuration ISPconfig 3, ce bloc se trouve dans le fichier /etc/nginx/nginx.conf)
(dans ma configuration ISPconfig 3, ces blocs se trouvent dans le fichier /etc/nginx/conf.d/default.conf)
Assurez-vous également que le fichier php.ini de votre serveur est compatible avec ces paramètres NGINX. Dans mon cas, j'ai changé le paramètre dans la section File_Uploads de php.ini pour lire:
Remarque: si vous gérez une configuration ISPconfig 3 (ma configuration est sur CentOS 6.3, selon The Perfect Server ), vous devrez gérer ces entrées dans plusieurs fichiers distincts. Si votre configuration est similaire à celle de la configuration pas à pas, les fichiers de conf NGINX que vous devez modifier se trouvent ici:
Mon fichier php.ini se trouvait ici:
J'ai continué à ignorer le bloc http {} dans le fichier nginx.conf. Apparemment, ignorer cela a eu pour effet de limiter le téléchargement à la limite par défaut de 1M. Après avoir apporté les modifications associées, vous voudrez également être sûr de redémarrer vos services NGINX et PHP FastCGI Process Manager (PHP-FPM). Sur la configuration ci-dessus, j'utilise les commandes suivantes:
la source
/etc/init.d/nginx reload
place. Cela a ajouté des avantages tels que «si la configuration est incorrecte», NginX n'arrêtera pas de fonctionner.nginx -t
(teste la syntaxe du fichier de configuration) puisnginx -s reload
(effectue le rechargement réel).Depuis mars 2016 , je suis tombé sur ce problème en essayant de POSTER json sur https (à partir de requêtes python, ce n'est pas important).
L'astuce consiste à mettre "client_max_body_size 200M;" en au moins deux endroits
http {}
etserver {}
:1. l'
http
annuaire/etc/nginx/nginx.conf
2. le
server
répertoire de votre vhost./etc/nginx/sites-available/mysite.com
, pour ceux qui n'ont pas de vhosts, c'est probablement votre nginx.conf ou dans le même répertoire que lui.3. le
location /
répertoire au même endroit que 2./
, mais si cela ne fonctionne pas du tout, je recommanderais de l'appliquer à/
, puis une fois que son fonctionnement sera plus spécifique.N'oubliez pas - si vous avez SSL, cela vous obligera à définir ce qui précède pour le SSL
server
etlocation
aussi, où que ce soit (idéalement le même que 2. ). J'ai trouvé que si votre client essayait de télécharger sur http, et que vous vous attendiez à ce qu'il obtienne 301 pour https, nginx abandonnerait la connexion avant la redirection en raison du fichier trop volumineux pour le serveur http, donc il doit être dans les deux .Les commentaires récents suggèrent qu'il y a un problème avec SSL avec les nouvelles versions de Nginx, mais je suis sur 1.4.6 et tout va bien :)
la source
client_max_body_size
est honoré dans la sectionhttp
sans avoir besoin de l'ajouter ailleurs.Vous devez appliquer les modifications suivantes:
Mettez à jour
php.ini
(recherchez le bon fichier iniphpinfo();
) et augmentezpost_max_size
etupload_max_filesize
à la taille souhaitée:Mise à jour des paramètres Nginx pour votre site Web et ajouter la
client_max_body_size
valeur dans votrelocation
,http
ou leserver
contexte.Redémarrez NginX et PHP-FPM:
REMARQUE: Parfois (dans mon cas, presque à chaque fois), vous devez tuer le
php-fpm
processus s'il n'a pas été correctement actualisé par la commande de service. Pour ce faire, vous pouvez obtenir la liste des processus (ps -elf | grep php-fpm
) et les tuer un par un (kill -9 12345
) ou utiliser la commande suivante pour le faire pour vous:la source
Veuillez voir si vous définissez la directive client_max_body_size dans le bloc http {} et non dans le bloc location {}. Je l'ai mis dans le bloc http {} et ça marche
la source
Quelqu'un me corrige si c'est mauvais, mais j'aime tout verrouiller autant que possible, et si vous n'avez qu'une seule cible pour les téléchargements (comme c'est généralement le cas), alors ciblez simplement vos modifications dans ce fichier. Cela fonctionne pour moi sur le package Ubuntu nginx-extras mainline 1.7+:
la source
J'ai eu un problème similaire récemment et j'ai découvert que cela
client_max_body_size 0;
pouvait résoudre un tel problème. Cela mettra client_max_body_size à aucune limite. Mais la meilleure pratique consiste à améliorer votre code, il n'est donc pas nécessaire d'augmenter cette limite.la source
En supposant que vous avez déjà défini le client_max_body_size et divers paramètres PHP (upload_max_filesize / post_max_size, etc.) dans les autres réponses, puis redémarré ou rechargé NGINX et PHP sans aucun résultat, exécutez ceci ...
nginx -T
Cela vous donnera toutes les erreurs non résolues dans vos configurations NGINX. Dans mon cas, j'ai eu du mal avec l'erreur 413 pendant toute une journée avant de réaliser qu'il y avait d'autres erreurs SSL non résolues dans la configuration NGINX (chemin incorrect pour les certificats) qui devaient être corrigées. Une fois que j'ai résolu les problèmes non résolus que j'ai obtenus avec 'nginx -T', NGINX rechargé et EUREKA !! Cela l'a corrigé.
la source
J'installe un serveur de développement pour jouer avec celui qui reflète notre live obsolète, j'ai utilisé The Perfect Server - Ubuntu 14.04 (nginx, BIND, MySQL, PHP, Postfix, Dovecot et ISPConfig 3)
Après avoir rencontré le même problème, je suis tombé sur ce message et rien ne fonctionnait. J'ai changé la valeur dans chaque fichier recommandé (nginx.conf, ispconfig.vhost, / sites-available / default, etc.)
Enfin, changer
client_max_body_size
mon/etc/nginx/sites-available/apps.vhost
et redémarrer nginx est ce qui a fait l'affaire. J'espère que cela aide quelqu'un d'autre.la source
Je rencontre le même problème, mais je n'ai rien trouvé à voir avec nginx. J'utilise nodejs comme serveur principal, j'utilise nginx comme proxy inverse, le code 413 est déclenché par le serveur de noeud. nœud utiliser koa analyser le corps. koa limite la longueur encodée en url.
définir formLimit sur plus grand peut résoudre ce problème.
la source
A eu le même problème que la
client_max_body_size
directive a été ignoré.Mon erreur stupide était que j'ai mis un fichier à l'intérieur
/etc/nginx/conf.d
qui ne s'est pas terminé.conf
. Nginx ne les chargera pas par défaut.la source
Si vous utilisez la version Windows nginx, vous pouvez essayer de tuer tous les processus nginx et le redémarrer pour voir. J'ai rencontré le même problème dans mon environnement, mais je l'ai résolu avec cette solution.
la source
tasklist /fi "imagename eq nginx.exe"