Base de Conhecimento

Erro 413 Request Entity Too Large: como resolver

  • erro 413, nginx, php, upload, cloudflare, apache
  • Usuários acharam útil: 0

Entenda o erro 413, descubra qual limite recusou o envio e corrija no Nginx, no PHP, no Apache ou na Cloudflare, conferindo cada etapa na ordem.

Por Redação Eleven Host · @robson.direitodigital · 29 de outubro de 2026 · 9 min de leitura

Arte da Eleven Host: janela de terminal com o título: Erro 413 Request Entity Too Large: como resolver

Capa da Redação Eleven Host para o guia: Erro 413 Request Entity Too Large: como resolver Arte: Eleven Host

O erro 413 aparece quando o servidor recusa um envio maior do que o limite que ele aceita. No Nginx, aumente o client_max_body_size e, se o site usa PHP, ajuste também o upload_max_filesize e o post_max_size no php.ini.

Este guia explica o que o erro significa, onde fica o limite (Nginx, PHP, Apache ou Cloudflare), como corrigir cada um e em que ordem conferir quando o erro continua depois da mudança. Ele segue a RFC 9110 e a documentação do Nginx, do PHP, do Apache e da Cloudflare.

O que o erro 413 significa

A RFC 9110, que define o protocolo HTTP, descreve o código 413 assim: o servidor está recusando processar a requisição porque o conteúdo enviado é maior do que ele quer ou consegue processar. Na prática, é o que acontece quando você sobe uma imagem, um backup ou um arquivo grande e o servidor recusa o envio. Se o limite for temporário, a RFC prevê que o servidor possa informar quando tentar de novo.

O nome do erro mudou com o tempo. O nome atual é "413 Content Too Large". Antes da RFC 9110 a frase era "Payload Too Large", e o Nginx ainda escreve "413 Request Entity Too Large", o nome mais antigo. Segundo a MDN, o nome antigo ainda é muito usado. Os três nomes são o mesmo erro.

Onde está o limite

O envio passa por várias camadas antes de chegar ao seu site, e cada uma pode ter um limite próprio. Os pontos onde o limite pode estar são:

  • Nginx: a diretiva client_max_body_size, com padrão de 1 MB por requisição.
  • PHP: as diretivas upload_max_filesize (padrão 2M) e post_max_size (padrão 8M). O PHP não devolve 413, mas bloqueia o envio por outro caminho.
  • Apache: a diretiva LimitRequestBody.
  • Cloudflare: o limite de envio do plano, quando o proxy está ligado.

Uma forma de descobrir quem recusou é olhar a página de erro. Se ela diz "nginx", o limite é do Nginx. Se diz "cloudflare", é o limite da Cloudflare. Se não aparece 413, mas o arquivo "some" ou o sistema mostra um aviso de tamanho máximo, é o PHP. Essa leitura é uma dica prática para começar, e depois você confirma no log.

Para ver o log do Nginx, rode:

sudo tail -n 50 /var/log/nginx/error.log

Se o Nginx recusou o envio, a linha do erro pode mencionar um corpo de requisição grande demais.

Resolver no Nginx

Segundo a documentação do Nginx, o client_max_body_size define o tamanho máximo permitido para o corpo da requisição do cliente. Se a requisição passa do valor, o Nginx devolve o erro 413. O padrão é 1m e a diretiva pode ficar nos contextos http, server e location. A documentação também avisa que os navegadores não conseguem exibir esse erro direito, então a tela pode mostrar uma falha genérica.

Siga a ordem:

  1. Abra o arquivo de configuração do site, aquele que você criou no guia Instalar Nginx no Ubuntu: passo a passo na VPS.
  2. Dentro do bloco server { }, acrescente a linha abaixo. Para valer para os sites do servidor inteiro, ela pode ir no bloco http { }.

client_max_body_size 64m;

  1. Teste a sintaxe. O Nginx confere se a configuração está correta e tenta abrir os arquivos citados nela:

sudo nginx -t

  1. Se o teste passou, recarregue. Esse comando inicia os novos processos com a configuração nova e encerra os antigos aos poucos, sem derrubar quem está conectado:

sudo systemctl reload nginx

O valor 64m é só um exemplo. Escolha um limite que cubra o maior arquivo que você espera receber. O valor 0 desliga a checagem de tamanho, e em site público isso não é uma boa ideia, porque um visitante poderia enviar um corpo gigante.

Quer um servidor seu para ajustar o Nginx? A VPS Plano Bronze sai a partir de R$ 17,00/mês; confira na loja o que cada plano inclui. Ver planos de VPS

Ajustar o PHP

Se o seu site usa PHP, liberar o envio só no Nginx não resolve. Segundo a documentação do PHP, o upload_max_filesize é o tamanho máximo de um arquivo enviado (padrão 2M) e o post_max_size é o limite do corpo inteiro do envio (padrão 8M), que precisa ser maior que o primeiro. A mesma página diz que, em geral, o memory_limit deve ser maior que o post_max_size. Os valores aceitam os sufixos K, M e G.

Um detalhe importante: se o envio passa do post_max_size, o PHP não devolve 413. A documentação diz que as variáveis $_POST e $_FILES chegam vazias. Por isso o sintoma pode ser um formulário que volta em branco ou um aviso de "arquivo excede o tamanho máximo", e não a tela de 413.

Os três limites precisam combinar: o client_max_body_size do Nginx deve ser maior ou igual ao post_max_size, e este maior que o upload_max_filesize. Um exemplo coerente é Nginx com 64m, post_max_size de 64M e upload_max_filesize de 60M.

No Ubuntu com PHP-FPM, nos pacotes do Ubuntu, o arquivo fica em /etc/php/8.3/fpm/php.ini; troque o 8.3 pela sua versão, que você vê com php -v. Edite as duas linhas:

upload_max_filesize = 60M

post_max_size = 64M

Depois reinicie o serviço, trocando o 8.3 pela sua versão:

sudo systemctl restart php8.3-fpm

A documentação do PHP indica que essas duas diretivas não mudam por código com ini_set; o lugar para ajustar é o php.ini. Para instalar e entender o PHP-FPM, veja Instalar PHP no Ubuntu: PHP-FPM com Nginx na VPS. Se o seu site é WordPress, o guia Aumentar limite de upload do WordPress: passo a passo mostra o caminho completo.

Ajustar o Apache

No Apache, o limite é o LimitRequestBody. Segundo a documentação do Apache 2.4, o padrão é 1073741824 (1 GB). Atenção à versão: até o Apache 2.4.53, o padrão era 0, que significa sem limite. A diretiva funciona no servidor, no virtual host, em diretórios e no .htaccess. Se o envio passa do limite, o servidor devolve uma resposta de erro em vez de atender o pedido.

Para limitar a 100 KB, a documentação mostra o valor em bytes:

LimitRequestBody 102400

Para aumentar, use o valor em bytes que você precisa. Depois de editar, teste a configuração e recarregue (dica prática para o Ubuntu):

sudo apachectl configtest

sudo systemctl reload apache2

Se você usa a Cloudflare

Com o proxy da Cloudflare ligado, o envio passa por ela antes de chegar ao seu servidor. De acordo com a documentação da Cloudflare, no plano gratuito o limite é de 100 MB por envio. Um upload maior que isso volta com erro 413 da própria Cloudflare, mesmo que o seu Nginx aceite. Se a página de erro menciona "cloudflare", aumentar o client_max_body_size não resolve.

Nesse caso, há três saídas (dica prática nossa, fora da documentação): enviar arquivos menores, dividir o envio em partes ou subir o arquivo por um caminho que não passe pelo proxy, como um subdomínio sem o proxy ligado. Confira a página "Error 413" na documentação da Cloudflare para ver os limites do seu plano.

Depois de mudar, ainda dá 413?

Se o erro continua, confira nesta ordem:

  1. Recarregou o Nginx? Rode sudo nginx -t e sudo systemctl reload nginx. Sem o reload, a mudança não vale.
  2. Editou o bloco certo? A diretiva pode estar em http, server e location. Um valor menor num bloco mais específico, como o location da rota de upload, vale para aquela rota.
  3. O arquivo tem tamanho maior que o limite? Compare o peso do arquivo com o valor configurado. O envio carrega também os outros campos do formulário.
  4. O PHP também foi ajustado? Reinicie o PHP-FPM e confira os dois valores no php.ini.
  5. A Cloudflare está na frente? Se o envio é maior que 100 MB no plano gratuito, o limite é dela.
  6. Há mais de um Nginx ou proxy na frente? Se o seu app roda atrás de um proxy reverso, como no guia Nginx proxy reverso: como configurar na sua VPS, cada Nginx tem o próprio limite.
  7. Olhou o log? O error.log do Nginx indica quem recusou o envio.

Os limites de Nginx, PHP, Apache e Cloudflare são independentes. Aumentar só um deles pode não resolver, porque o envio é barrado no primeiro que ele encontra.

Checklist do 413

  • Descobri quem recusou: página de erro, log ou aviso do sistema.
  • No Nginx, aumentei o client_max_body_size no bloco certo.
  • Rodei sudo nginx -t e sudo systemctl reload nginx.
  • No PHP, ajustei upload_max_filesize e post_max_size no php.ini e reiniciei o PHP-FPM.
  • Conferi se os três valores combinam: Nginx maior ou igual ao post_max_size, e este maior que o upload_max_filesize.
  • No Apache, conferi o LimitRequestBody e a versão.
  • Com a Cloudflare, lembrei do limite de 100 MB no plano gratuito.
  • Testei de novo com um arquivo de tamanho conhecido.

Precisa de um servidor para hospedar seu site e ajustar os limites de upload? Veja a VPS Plano Bronze a partir de R$ 17,00/mês e confira na loja o que cada plano inclui. Conhecer a VPS

Perguntas frequentes

O que é o erro 413 Request Entity Too Large?

É o servidor recusando um envio maior do que o limite configurado. O nome oficial hoje é Content Too Large, mas o Nginx ainda usa Request Entity Too Large.

Qual é o limite padrão de upload do Nginx?

O client_max_body_size vem com 1 MB por padrão, segundo a documentação do Nginx. Aumente no bloco server e recarregue o serviço.

Mudei o Nginx e o erro continua. O que fazer?

Confira o PHP (upload_max_filesize e post_max_size), a Cloudflare, se estiver na frente, e se você recarregou o Nginx depois da mudança.

O PHP também devolve 413?

Não. Se o envio passa do post_max_size, o PHP entrega o formulário vazio ou o sistema mostra um aviso de tamanho máximo.

Qual o limite de envio da Cloudflare?

No plano gratuito, 100 MB por envio, segundo a documentação da Cloudflare. Acima disso, o erro 413 vem dela.

Esta resposta lhe foi útil?

Artigos Relacionados