"413 Solicitar entidade muito grande" no Nginx com o conjunto "client_max_body_size"


55

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

413 Request Entity Too Large

Eu sei, isso está relacionado a client_max_body_size, então eu 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 esse erro quando o arquivo inteiro foi carregado.

Respostas:


72

Modificar arquivo de configuração NGINX

sudo nano /etc/nginx/nginx.conf

Procurar esta variável: client_max_body_size. Se você o encontrar, apenas aumente seu tamanho para 100 milhões, por exemplo. Se não existir, você poderá 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

Modificar arquivo PHP.ini para limites de upload

Não é necessário em todas as configurações, mas também é necessário modificar as configurações de upload do PHP para garantir que nada fique fora do limite pelas configurações do php.

Se você estiver usando 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 diretrizes, uma a uma

upload_max_filesize
post_max_size

e aumente seu limite para 100 milhões, por padrão, são 8 milhões e 2 milhões.

upload_max_filesize = 100M
post_max_size = 100M

Por fim, salve-o e reinicie o PHP.

Usuários do PHP5-FPM usam isso,

sudo service php5-fpm restart

Usuários do PHP7.0-FPM usam isso,

sudo service php7.0-fpm restart

Vai funcionar bem !!!


11
por que 100Mb para client_max_body_size no nginx.conf?
user2979409

você pode colocar qualquer valor de acordo com suas necessidades, mas 100 MB é suficiente
Sukhjinder Singh

mas estou carregando arquivos de até 30 Gb.
user2979409

encontrar um arquivo de tamanho máximo e permitir que mais do que isso arquivo
Sukhjinder Singh

então por que client_max_body_size não funciona dentro do meu / local?
user2979409

9

Se você estiver carregando arquivos desse tamanho, provavelmente desative a verificação do tamanho do corpo com:

client_max_body_size 0;

3

Com respeito, não sei por que você está usando o http para transferir tantos dados. Eu costumo fazer minhas grandes transferências sobre 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 com bzip. Mas se eu precisasse fazer uma transferência recuperável, 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. comprimir a transferência

Apenas uma delas seria uma opção para você ao tentar fazer upload por http (ou seja, # 1 se você estivesse em https).

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


Isso não tem nada a ver com a questão.
precisa saber é o seguinte

11
Está lá apenas porque o cara está transferindo arquivos em escala Blueray por http. Sem ter mais detalhes sobre o motivo de alguém querer fazer isso, julgo que o cara que fez a pergunta seria melhor atendido se não respondesse com êxito. Eu reconheço que minha ignorância desses detalhes é um problema.
Matt Murphy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.