“413 Request Entity Too Large” em Nginx com o conjunto “client_max_body_size”

37

Estou enviando um arquivo de 26Gb, mas estou recebendo:

413 Request Entity Too Large

Eu sei, isso está relacionado a client_max_body_size , então tenho esse parâmetro definido como 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;
  }

Mas ainda recebo este erro quando todo o arquivo foi enviado.

    
por user2979409 14.11.2016 / 12:31

3 respostas

43

Modifique o arquivo de configuração do NGINX

sudo nano /etc/nginx/nginx.conf

Pesquise por esta variável: client_max_body_size . Se você encontrá-lo, basta aumentar seu tamanho para 100M, por exemplo. Se não existir, você pode adicioná-lo dentro e no final de http

client_max_body_size 100M;

Reinicie o nginx para aplicar as alterações.

sudo service nginx restart

Modifique o arquivo PHP.ini para os limites de upload

Não é necessário em todas as configurações, mas você também pode ter que modificar as configurações de upload do PHP para garantir que nada saia do limite por configurações do php.

Se você estiver usando o PHP5-FPM, use o seguinte comando,

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

Se você estiver usando o PHP7.0-FPM, use o seguinte comando,

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

Agora, encontre as seguintes diretivas, uma a uma

upload_max_filesize
post_max_size

e aumentar seu limite para 100M, por padrão eles são 8M e 2M.

upload_max_filesize = 100M
post_max_size = 100M

Por fim, salve-o e reinicie o PHP.

Os usuários do PHP5-FPM usam isso,

sudo service php5-fpm restart

Os usuários do PHP7.0-FPM usam isso,

sudo service php7.0-fpm restart

Funcionará bem !!!

    
por 14.11.2016 / 12:59
3

Se você estiver enviando arquivos desse tamanho, provavelmente deverá desabilitar a verificação do tamanho do corpo com:

client_max_body_size 0;
    
por 08.03.2018 / 12:14
1

No que diz respeito, não sei por que você está usando o http para transferir muitos dados. Eu costumo fazer minhas grandes transferências por ssh

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

... o que me dá uma transferência compactada por bzip. Mas se eu precisasse fazer uma transferência recuperável, eu poderia usar sftp, lftp e até rsync. Qualquer um desses (ou seus derivados ou irmãos) é capaz de

  1. empregando um canal criptografado, se desejado,
  2. retomar uma transferência interrompida e
  3. compactando a transferência

Apenas um deles seria uma opção para você ao tentar fazer o upload pelo http (ou seja, nº 1 se estivesse em https).

Espero que você analise qualquer uma das alternativas acima ou várias outras alternativas.

    
por 17.05.2017 / 19:40