Erro 413 Request Entity Too Large: como resolver
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

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) epost_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:
- Abra o arquivo de configuração do site, aquele que você criou no guia Instalar Nginx no Ubuntu: passo a passo na VPS.
- Dentro do bloco
server { }, acrescente a linha abaixo. Para valer para os sites do servidor inteiro, ela pode ir no blocohttp { }.
client_max_body_size 64m;
- Teste a sintaxe. O Nginx confere se a configuração está correta e tenta abrir os arquivos citados nela:
sudo nginx -t
- 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:
- Recarregou o Nginx? Rode
sudo nginx -tesudo systemctl reload nginx. Sem o reload, a mudança não vale. - Editou o bloco certo? A diretiva pode estar em
http,serverelocation. Um valor menor num bloco mais específico, como olocationda rota de upload, vale para aquela rota. - 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.
- O PHP também foi ajustado? Reinicie o PHP-FPM e confira os dois valores no php.ini.
- A Cloudflare está na frente? Se o envio é maior que 100 MB no plano gratuito, o limite é dela.
- 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.
- Olhou o log? O
error.logdo 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_sizeno bloco certo. - Rodei
sudo nginx -tesudo systemctl reload nginx. - No PHP, ajustei
upload_max_filesizeepost_max_sizeno 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 oupload_max_filesize. - No Apache, conferi o
LimitRequestBodye 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.