«Entité 413 de requête trop grande» dans Nginx avec le jeu «client_max_body_size»

55

Je télécharge un fichier de 26 Go, mais j'obtiens:

413 Request Entity Too Large

Je sais, cela est lié à client_max_body_size, donc j'ai ce paramètre réglé sur 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;
  }

Mais je reçois toujours cette erreur quand tout le fichier a été téléchargé.

utilisateur2979409
la source

Réponses:

72

Modifier le fichier de configuration NGINX

sudo nano /etc/nginx/nginx.conf

Rechercher pour cette variable: client_max_body_size. Si vous le trouvez, augmentez simplement sa taille à 100M, par exemple. S'il n'existe pas, vous pouvez l'ajouter à l'intérieur et à la fin de http.

client_max_body_size 100M;

Redémarrez nginx pour appliquer les modifications.

sudo service nginx restart

Modifier le fichier PHP.ini pour les limites de téléchargement

Ce n'est pas nécessaire sur toutes les configurations, mais vous devrez peut-être aussi modifier les paramètres de téléchargement PHP pour vous assurer que rien ne sort des limites des configurations php.

Si vous utilisez PHP5-FPM, utilisez la commande suivante,

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

Si vous utilisez PHP7.0-FPM, utilisez la commande suivante,

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

Maintenant, trouvez les directives suivantes une à une

upload_max_filesize
post_max_size

et augmenter sa limite à 100M, par défaut ils sont 8M et 2M.

upload_max_filesize = 100M
post_max_size = 100M

Enfin, enregistrez-le et redémarrez PHP.

Les utilisateurs de PHP5-FPM l'utilisent,

sudo service php5-fpm restart

Les utilisateurs de PHP7.0-FPM l'utilisent,

sudo service php7.0-fpm restart

Cela fonctionnera bien !!!

Sukhjinder Singh
la source
1
pourquoi 100Mb pour client_max_body_size dans nginx.conf?
user2979409
vous pouvez mettre n'importe quelle valeur selon vos besoins mais 100 mb suffisent
Sukhjinder Singh
mais je télécharge jusqu'à 30 Go de fichiers.
user2979409
Trouvez un fichier de taille maximale et autorisez plus que ce fichier
Sukhjinder Singh
alors pourquoi client_max_body_size ne fonctionne pas dans mon / emplacement?
user2979409
9

Si vous téléchargez des fichiers de cette taille, vous devriez probablement simplement désactiver la vérification de la taille du corps avec:

client_max_body_size 0;
devius
la source
3

En tout respect, je ne sais pas pourquoi vous utilisez http pour transférer autant de données. J'ai tendance à faire mes gros transferts sur ssh

//such as:
tar cjf - /path/to/stuff | ssh [email protected] "cd /path/to/remote/stuff;tar xjf -"

... qui me donne un transfert compressé bzip. Mais si je devais effectuer un transfert pouvant être repris, je pourrais utiliser sftp, lftp, voire rsync. N'importe lequel de ceux-ci (ou leurs dérivés ou frères et sœurs) est capable de

  1. employant un canal crypté si désiré,
  2. reprise d'un transfert interrompu et
  3. comprimer le transfert

Un seul de ceux-ci serait une option pour vous lorsque vous essayez de télécharger via http (à savoir, n ° 1 si vous êtes sur https).

J'espère que vous examinerez l'une des solutions ci-dessus ou plusieurs autres.

Matt Murphy
la source
Cela n'a rien à voir avec la question.
Zenklys
1
C'est seulement là parce que le gars transfère des fichiers à l'échelle Blueray sur http. Sans avoir plus de détails sur les raisons pour lesquelles quelqu'un voudrait faire cela, j'estime que le gars qui pose la question serait mieux servi en ne répondant pas avec succès à la question. Je reconnais que mon ignorance de ces détails est un problème.
Matt Murphy