web-dev-qa-db-fra.com

"413 Request Entity Too Large" dans Nginx avec "client_max_body_size" défini

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, j'ai donc 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 lorsque le fichier entier a été téléchargé.

62
user2979409

Modifier le fichier de configuration NGINX

Sudo nano /etc/nginx/nginx.conf

Recherchez 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

Il n'est pas nécessaire sur toutes les configurations, mais vous devrez peut-être également 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

Trouvez maintenant les directives suivantes une par 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 !!!

84
Sukhjinder Singh

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

client_max_body_size 0;
13
devius

Avec égards, 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 user@remote-Host "cd /path/to/remote/stuff;tar xjf -"

... ce qui me donne un transfert compressé bzip. Mais si j'avais besoin de faire un transfert pouvant être repris, je pourrais utiliser sftp, lftp, voire rsync. Chacun de ces (ou leurs dérivés ou frères et sœurs) est capable de

  1. employant un canal crypté si désiré,
  2. reprendre un transfert interrompu et
  3. compresser le transfert

Un seul d'entre eux serait une option pour vous lorsque vous tentez de télécharger sur http (à savoir, # 1 si vous étiez sur https).

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

4
Matt Murphy