"413 Entità richiesta troppo grande" in Nginx con set "client_max_body_size"


55

Sto caricando un file da 26 GB, ma sto ottenendo:

413 Request Entity Too Large

Lo so, questo è legato a client_max_body_size, quindi ho questo parametro impostato su 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;
  }

Ma ho ancora questo errore quando l'intero file è stato caricato.

Risposte:


72

Modifica il file di configurazione NGINX

sudo nano /etc/nginx/nginx.conf

Cerca per questa variabile: client_max_body_size. Se lo trovi, aumenta le dimensioni a 100M, ad esempio. Se non esiste, è possibile aggiungerlo all'interno e alla fine di http

client_max_body_size 100M;

Riavvia nginx per applicare le modifiche.

sudo service nginx restart

Modifica il file PHP.ini per i limiti di caricamento

Non è necessario su tutte le configurazioni, ma potresti anche dover modificare le impostazioni di upload di PHP per assicurarti che nulla sia fuori limite dalle configurazioni di php.

Se stai usando PHP5-FPM usa il seguente comando,

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

Se stai usando PHP7.0-FPM usa il comando seguente,

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

Ora trova le seguenti direttive una per una

upload_max_filesize
post_max_size

e aumenta il suo limite a 100M, per impostazione predefinita sono 8M e 2M.

upload_max_filesize = 100M
post_max_size = 100M

Infine salvalo e riavvia PHP.

Gli utenti di PHP5-FPM usano questo,

sudo service php5-fpm restart

Gli utenti di PHP7.0-FPM usano questo,

sudo service php7.0-fpm restart

Funzionerà benissimo !!!


1
perché 100Mb per client_max_body_size in nginx.conf?
user2979409

puoi mettere qualsiasi valore in base alle tue esigenze ma 100 mb sono sufficienti
Sukhjinder Singh,

ma sto caricando file fino a 30 GB.
user2979409

trova un file di dimensioni massime e consentilo più di quel file
Sukhjinder Singh,

quindi perché client_max_body_size non funziona all'interno della mia / posizione?
user2979409

9

Se stai caricando file di quelle dimensioni, probabilmente dovresti semplicemente disabilitare il controllo delle dimensioni del corpo con:

client_max_body_size 0;

3

Con rispetto, non sono sicuro del motivo per cui stai usando http per trasferire così tanti dati. Tendo a fare i miei grandi trasferimenti su SSH

//such as:
tar cjf - /path/to/stuff | ssh user@remote-host "cd /path/to/remote/stuff;tar xjf -"

... che mi dà un trasferimento compresso con bzip. Ma se avessi bisogno di fare un trasferimento ripristinabile, potrei usare sftp, lftp, persino rsync. Qualcuno di questi (o i loro derivati ​​o fratelli) è capace

  1. utilizzando un canale crittografato, se lo si desidera,
  2. riprendere un trasferimento interrotto e
  3. comprimere il trasferimento

Solo una di queste sarebbe un'opzione per te quando tenti di caricare su http (vale a dire, # 1 se tu fossi su https).

Spero che esaminerai una delle precedenti o diverse altre alternative.


Questo non ha nulla a che fare con la domanda.
Zenklys,

1
È lì solo perché il ragazzo sta trasferendo file in scala Blueray su http. Senza avere maggiori dettagli sul perché qualcuno vorrebbe farlo, giudico che il ragazzo che pone la domanda sarebbe meglio se non rispondesse correttamente alla domanda. Riconosco che la mia ignoranza di quei dettagli è un problema.
Matt Murphy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.