Erro 502 Bad Gateway: o que é e como resolver

Ponto-chave

Um 502 Bad Gateway significa que o servidor que você alcançou é um gateway ou proxy (nginx, Cloudflare, um balanceador de carga) e recebeu uma resposta inválida do servidor de aplicação por trás dele. Como visitante, espere um minuto, recarregue e verifique se o site está fora do ar para todos. Como dono do site, o log de erros do nginx costuma mostrar em uma linha qual destas coisas aconteceu: a aplicação não está rodando, o proxy_pass aponta para a porta ou o socket errado, a aplicação travou no meio da requisição ou os cabeçalhos da resposta eram grandes demais para o buffer do proxy.

Verifique agora

Página de erro 502 Bad Gateway do nginx ao lado das cinco verificações que resolvem a maioria dos erros 502
Página de erro 502 Bad Gateway do nginx ao lado das cinco verificações que resolvem a maioria dos erros 502
Comece a ler
  1. O que é o erro 502 Bad Gateway?
  2. As várias caras do erro 502
  3. 502 vs. 500 vs. 503 vs. 504: qual é a diferença?
  4. O que causa o erro 502 Bad Gateway?
  5. Como resolver o erro 502 como visitante
  6. Como resolver o 502 Bad Gateway no seu servidor
  7. 1. Leia o log de erros do proxy
  8. 2. Verifique se a aplicação upstream está rodando
  9. 3. Confirme que o proxy_pass aponta para a porta ou o socket certo
  10. 4. Um exemplo real: como o dnsrobot.net serviu um 502
  11. Node.js atrás de um balanceador de carga: 502 aleatórios
  12. 502 Bad Gateway na Cloudflare
  13. O erro 502 prejudica o SEO?
  14. Perguntas Frequentes

O que é o erro 502 Bad Gateway?

502 Bad Gateway é um código de status HTTP que significa que o servidor que está respondendo a você atua como gateway ou proxy e recebeu uma resposta inválida do servidor por trás dele. O padrão HTTP (RFC 9110, seção 15.6.3) o define exatamente assim: o servidor, "enquanto atuava como gateway ou proxy, recebeu uma resposta inválida de um servidor de entrada que acessou ao tentar atender à requisição".

A maioria dos sites modernos tem pelo menos duas camadas. Um servidor na frente, como nginx, Apache, Cloudflare ou um balanceador de carga na nuvem, aceita a sua conexão e repassa a requisição para uma aplicação upstream, como PHP-FPM, um app Node.js, o Gunicorn do Python ou um container. Quando esse upstream está fora do ar, trava ou responde algo que o proxy não consegue usar, o proxy não tem nada para entregar a você e retorna 502.

O ponto importante é que o próprio gateway está funcionando. Ele recebeu a sua requisição e respondeu. A falha está um passo mais atrás.

É 502 para todo mundo ou só para você? Verifique

As várias caras do erro 502

O código de status é o mesmo em todo lugar, mas a página que você vê depende de qual proxy a gerou:

De onde vemO que a página diz
nginx502 Bad Gateway, com nginx (e às vezes a versão) embaixo
Apache (mod_proxy)Proxy Error. The proxy server received an invalid response from an upstream server.
Cloudflare (a sua origem falhou)Error 502 Bad gateway, com os quadros de status Browser / Cloudflare / Host
Cloudflare (erro próprio)Uma página simples com 502 Bad Gateway e "cloudflare" embaixo
Microsoft IIS (ARR / ASP.NET Core)HTTP Error 502.3 - Bad Gateway, ou HTTP Error 502.5 - Process Failure
Serviços do Google502. That's an error. The server encountered a temporary error…
Navegadores / appsHTTP Error 502, 502 Proxy Error, Bad Gateway: The proxy server received an invalid response

Seja qual for a versão que você vê, o nome do proxy no rodapé é uma pista útil: ele diz ao dono do site qual camada investigar.

502 vs. 500 vs. 503 vs. 504: qual é a diferença?

Todos os códigos 5xx significam "problema no servidor", mas cada um aponta para uma camada diferente:

CódigoNomeO que significaCausa típica
500Internal Server ErrorA própria aplicação falhou ao processar a requisiçãoBug no código, erro fatal do PHP, configuração errada
502Bad GatewayO proxy recebeu do upstream uma resposta inválida, ou nenhuma que pudesse usarApp fora do ar ou travado, porta ou socket errado, cabeçalhos grandes demais
503Service UnavailableO servidor não consegue atender requisições no momentoSobrecarga, modo de manutenção, limites de taxa
504Gateway TimeoutO proxy esperou o upstream e desistiuConsulta lenta ao banco de dados, script demorado, timeout baixo demais

Uma regra rápida: 502 = o upstream recusou a conexão, desligou ou deu uma resposta ruim, 504 = o upstream não respondeu a tempo. Os nossos guias sobre os vizinhos explicam cada um em detalhe: 500 Internal Server Error, 503 Service Unavailable e 504 Gateway Timeout.

O que causa o erro 502 Bad Gateway?

  • A aplicação upstream não está rodando. O PHP-FPM, o Node, o Gunicorn ou o container travou, não iniciou depois de um deploy ou está reiniciando.
  • O proxy aponta para o lugar errado. O proxy_pass ou o fastcgi_pass usa a porta errada, um caminho de socket do PHP antigo depois de uma atualização, ou localhost dentro de um container Docker.
  • A aplicação trava em algumas requisições. Uma página dispara um encerramento por falta de memória ou uma exceção não tratada, e a conexão fecha antes da resposta.
  • Todos os workers estão ocupados. O PHP-FPM atingiu o pm.max_children, então as novas requisições esperam na fila do socket. A maioria acaba em 504 por timeout; quando a fila enche, o nginx registra (11: Resource temporarily unavailable) e retorna 502.
  • Os cabeçalhos da resposta são grandes demais. Cookies grandes ou cabeçalhos de segurança extensos estouram o proxy_buffer_size do nginx.
  • Incompatibilidade de keep-alive atrás de um balanceador de carga. A aplicação fecha conexões ociosas antes do que o balanceador espera, então o balanceador envia uma requisição para uma conexão que está sendo fechada.
  • O proxy não alcança o upstream depois de uma mudança de rede. Um firewall que rejeita o proxy, ou um upstream que mudou para outro IP, gera 502 (Connection refused, No route to host). Um firewall que descarta pacotes em silêncio gera 504, e atrás da Cloudflare isso aparece como 521 ou 522.

Como resolver o erro 502 como visitante

Você não consegue consertar o servidor de outra pessoa, mas estes passos confirmam que o problema está mesmo do lado deles e eliminam as raras causas locais:

  • Espere de 30 a 60 segundos e recarregue (Ctrl + R, ou Cmd + R no Mac). Muitos 502 duram só o tempo de um deploy ou de um reinício.
  • Verifique se está fora do ar para todos. O Verificador de site fora do ar do DNS Robot abre a página a partir de 11 lugares, e o Verificador de Cabeçalhos HTTP mostra o código de status exato que o nosso servidor recebe. Se eles também veem um 502, o problema é do site, não seu.
  • Force o recarregamento com Ctrl + Shift + R (Mac: Cmd + Shift + R), caso uma página de erro em cache esteja sendo mostrada a você.
  • Limpe o cache de DNS se o site mudou de hospedagem recentemente, para chegar ao servidor novo. Veja como limpar o DNS em todos os sistemas.
  • Desligue VPNs e proxies. O seu próprio proxy pode ser o "gateway" que falha, principalmente em redes de trabalho.
  • Teste outro navegador ou o celular com dados móveis. Se funcionar ali, limpe os cookies desse site.

Como resolver o 502 Bad Gateway no seu servidor

Do lado do servidor, o 502 é um dos erros mais fáceis de resolver, porque o proxy geralmente registra o que deu errado (as exceções são a condição de corrida de keep-alive de um balanceador e os 502 da própria Cloudflare). Siga estas três verificações em ordem; a quarta parte é um exemplo real.

1. Leia o log de erros do proxy

Reproduza o 502 e leia as últimas 50 linhas do log de erros do proxy (os comandos estão abaixo da tabela). Cada uma destas mensagens do nginx aponta para a sua própria correção:

Mensagem no logO que significa
connect() failed (111: Connection refused) while connecting to upstreamNada escuta na porta do upstream: a aplicação está fora do ar ou em outra porta
connect() to unix:/run/php/php8.x-fpm.sock failed (2: No such file or directory)O socket do PHP-FPM não existe, geralmente por causa de uma troca de versão do PHP
connect() to unix:… failed (13: Permission denied)O nginx não consegue acessar o socket: corrija listen.owner / listen.group
connect() to unix:… failed (11: Resource temporarily unavailable)A fila do socket do PHP-FPM está cheia: todos os workers estão ocupados (pm.max_children)
upstream prematurely closed connection while reading response headerA aplicação travou ou fechou a conexão no meio da requisição
upstream sent too big header while reading response header from upstreamOs cabeçalhos da resposta são maiores que o proxy_buffer_size (fastcgi_buffer_size no PHP-FPM)
no live upstreams while connecting to upstreamTodos os servidores do bloco upstream estão marcados como falhos
bash
# nginx
sudo tail -n 50 /var/log/nginx/error.log

# Apache
sudo tail -n 50 /var/log/apache2/error.log    # Debian/Ubuntu
sudo tail -n 50 /var/log/httpd/error_log      # RHEL/Alma/Rocky

2. Verifique se a aplicação upstream está rodando

bash
# PHP-FPM (adjust the version)
sudo systemctl status php8.3-fpm
sudo journalctl -u php8.3-fpm -n 50

# Node.js under PM2
pm2 status
pm2 logs --lines 50

# Docker
docker ps -a          # look for containers that keep restarting
docker logs --tail 50 <container>

# Was it killed for using too much memory?
sudo dmesg -T | grep -i "killed process"

Se o serviço estiver parado, inicie-o e descubra por que ele parou: um deploy que falhou, um erro de sintaxe na nova versão ou o OOM killer (que encerra processos por falta de memória). No log do PHP-FPM, server reached pm.max_children setting significa que todos os workers estavam ocupados. Aumente o pm.max_children só se o servidor tiver RAM para isso; caso contrário, encontre as requisições lentas que prendem os workers.

3. Confirme que o proxy_pass aponta para a porta ou o socket certo

Compare aquilo com que o nginx foi configurado para falar com o que está realmente escutando:

bash
# What is nginx proxying to?
sudo nginx -T 2>/dev/null | grep -n "proxy_pass\|fastcgi_pass"

# What is actually listening?
sudo ss -tlnp            # TCP ports and their processes
ls -l /run/php/          # PHP-FPM socket files

Dois descompassos clássicos: depois de atualizar o PHP, o socket passa a ser php8.3-fpm.sock enquanto o nginx ainda aponta para php8.1-fpm.sock; e, dentro do Docker, proxy_pass http://localhost:3000 aponta para o próprio container do nginx, e não para a aplicação, então use o nome do serviço do Compose (http://app:3000).

4. Um exemplo real: como o dnsrobot.net serviu um 502

Isso aconteceu conosco em 30 de setembro de 2026. Depois de publicarmos um lote de novos posts no blog, exatamente um deles retornou 502 Bad Gateway pelo nginx 1.24, enquanto todas as outras páginas funcionavam. O app Next.js por trás do nginx retornava essa mesma página com 200 OK quando a solicitávamos diretamente na porta 3000. Ou seja, a aplicação estava bem e o gateway é que estava falhando.

O log de erros do nginx tinha a resposta em uma linha: upstream sent too big header while reading response header from upstream. Os cabeçalhos de resposta daquela página somavam 4.087 bytes, a maior parte de um longo cabeçalho Content-Security-Policy mais cabeçalhos Link de preload. O nginx lê a primeira parte da resposta, incluindo todos os cabeçalhos, em um buffer definido por proxy_buffer_size, que por padrão tem o tamanho de uma página de memória: 4 KB no nosso servidor. Isso deixava só 9 bytes de folga, e o bloco completo de cabeçalhos, incluindo a linha de status, estourou o buffer.

A correção foram três linhas no bloco location que faz o proxy para a aplicação; depois do nginx -t e de um reload, a página retornou 200:

nginx
location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_buffer_size 16k;        # room for large headers (was the 4k default)
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
}

A lição: se só algumas páginas retornam 502 enquanto o resto do site funciona, procure um limite de tamanho, como cabeçalhos grandes ou valores de Set-Cookie nessas páginas, antes de suspeitar da aplicação.

Node.js atrás de um balanceador de carga: 502 aleatórios

Se você roda Node.js atrás de um AWS Application Load Balancer ou de um balanceador parecido e vê 502 ocasionais sem nenhum erro nos logs da aplicação, verifique os timeouts de keep-alive. O servidor HTTP do Node fecha conexões keep-alive ociosas depois de 5 segundos por padrão no Node 26 e anteriores (server.keepAliveTimeout; o Node 24.6 e o 22.19 acrescentaram um keepAliveTimeoutBuffer de 1 segundo, e a próxima versão major eleva o padrão para 65 segundos), enquanto um AWS ALB mantém conexões ociosas abertas por 60 segundos. Às vezes o balanceador reutiliza uma conexão no exato momento em que o Node a fecha, e essa requisição volta como 502.

A correção é manter o timeout da aplicação maior que o do balanceador:

javascript
const server = app.listen(3000)
// Must be longer than the load balancer's idle timeout (ALB default: 60s)
server.keepAliveTimeout = 65_000
server.headersTimeout = 66_000 // só é necessário antes do Node 18; não atrapalha depois

502 Bad Gateway na Cloudflare

Atrás da Cloudflare, veja primeiro quem gerou a página de erro (guia da Cloudflare sobre 502/504):

  • Página com a marca da Cloudflare (Browser ✓ / Cloudflare ✓ / Host ✗): o seu próprio servidor de origem retornou um 502 ou 504 para a Cloudflare. Resolva na origem com os passos do lado do servidor acima. Se a Cloudflare não consegue se conectar à origem de jeito nenhum, você recebe 521 ou 522, não 502.
  • Uma página simples com "502 Bad Gateway" e "cloudflare" embaixo: esta vem da própria Cloudflare. A documentação dela cita duas causas: a origem enviando conteúdo gzip corrompido, ou conteúdo gzip sem um Content-Length atualizado (desligue a compressão na origem para testar), e um pico repentino de tráfego em um data center da Cloudflare, que passa sozinho.
  • Uma página que cita nginx ou Apache: em geral a requisição chegou ao seu servidor sem passar pela Cloudflare, então o registro DNS não está com proxy (nuvem cinza, "DNS only") ou você está olhando a origem diretamente (a menos que uma Cache Rule ative "Origin error page pass-through").
  • Mudou de hospedagem? Atualize o registro A da origem no DNS da Cloudflare (um IP de origem errado costuma aparecer como 521, 522 ou 523). Um DNS Lookup só mostra a origem de registros com nuvem cinza (DNS only); registros com proxy respondem com os IPs da própria Cloudflare.

O erro 502 prejudica o SEO?

Uma queda curta, não. A documentação do Google diz que erros de servidor 5xx fazem os rastreadores reduzirem temporariamente o ritmo de rastreamento. Páginas já indexadas continuam no índice no início, mas, se os erros persistirem, o Google acaba removendo esses URLs.

Então um 502 que dura alguns minutos durante um deploy é inofensivo. Um 502 em páginas importantes que dura dias, ou que aparece de forma intermitente por semanas, pode reduzir o rastreamento e custar posições. Monitore os seus URLs principais e confira o relatório Estatísticas de rastreamento no Search Console depois de qualquer queda.

O site está retornando 502 para todo mundo?

O Verificador de Cabeçalhos HTTP grátis do DNS Robot solicita qualquer URL a partir dos nossos servidores e mostra o código de status exato, o software do servidor e todos os cabeçalhos da resposta. É o jeito mais rápido de confirmar um 502.

Fontes

  1. RFC 9110 §15.6.3: 502 Bad Gateway, IETF
  2. ngx_http_proxy_module (proxy_buffer_size), nginx
  3. Error 502 bad gateway or error 504 gateway timeout, Cloudflare
  4. HTTP status codes and Google's crawlers, Google

Perguntas Frequentes

O que significa 502 Bad Gateway?

Significa que o servidor que você alcançou é um gateway ou proxy, como o nginx, a Cloudflare ou um balanceador de carga, e recebeu uma resposta inválida do servidor de aplicação por trás dele. O proxy funciona; a aplicação por trás dele está fora do ar, travou, está inacessível ou enviou uma resposta que o proxy não conseguiu usar.

O erro 502 Bad Gateway é culpa minha?

Quase nunca. O 502 é um erro do lado do servidor. Recarregue depois de um minuto e verifique com um verificador de site fora do ar se ele está fora do ar para todos. As poucas causas locais são a sua própria VPN ou proxy, um registro DNS desatualizado depois que o site mudou de hospedagem ou os cookies desse site; outro navegador ou os dados móveis descartam essas causas.

Quanto tempo dura um 502 Bad Gateway?

Não há um tempo fixo. Um 502 causado por um deploy ou um reinício costuma sumir em segundos ou em poucos minutos. Se durar mais, a aplicação upstream travou ou está mal configurada, e continua fora do ar até o dono do site resolver.

O que significa 502 Bad Gateway nginx?

O nginx é o proxy que respondeu, e ele não conseguiu obter uma resposta válida da aplicação para a qual encaminha as requisições, como o PHP-FPM ou um app Node.js. O motivo exato está no log de erros do nginx, geralmente /var/log/nginx/error.log.

Qual é a diferença entre 502 e 504?

502 Bad Gateway significa que o proxy não conseguiu se conectar ao servidor upstream, ou que o upstream fechou a conexão ou retornou uma resposta inválida. 504 Gateway Timeout significa que o upstream não respondeu dentro do limite de tempo do proxy. O 502 sugere travamento ou configuração errada; o 504 sugere lentidão.

Uma VPN ou um proxy pode causar o erro 502?

Sim, se a sua própria VPN ou o proxy corporativo for o gateway que falha. Nesse caso, o erro aparece em todos os sites, ou só quando a VPN está ligada. Desconecte e recarregue. Se o 502 desaparecer, o problema é a sua VPN ou o proxy, não o site.

Como resolver o 502 Bad Gateway na Cloudflare?

Olhe a página de erro. Uma página com a marca da Cloudflare e o Host marcado como falho significa que o seu próprio servidor de origem retornou o 502, então use os passos do lado do servidor: o log de erros, se a aplicação está rodando, o proxy_pass. Uma página simples com "502 Bad Gateway" e "cloudflare" embaixo vem da própria Cloudflare: a documentação cita gzip corrompido vindo da origem e mudanças curtas de tráfego entre data centers.

Por que recebo um 502 em apenas uma página do meu site?

Quando a maior parte do site funciona e uma página retorna 502, veja o que essa página tem de único: cabeçalhos de resposta ou valores de Set-Cookie que estouram o buffer do proxy, ou um trecho de código que derruba a aplicação ou esgota a memória dela (uma consulta muito lenta gera 504, não 502). O log de erros do proxy aponta a causa, por exemplo upstream sent too big header.

O erro 502 afeta o SEO?

Quedas curtas de 502, não. O Google desacelera o rastreamento quando vê erros 5xx e mantém as páginas indexadas por um tempo. Erros 502 persistentes em páginas importantes podem levar o Google a remover esses URLs do índice, então corrija erros duradouros rapidamente.

Sobre o autor

Shaik Vahid

Fundador da DNS Robot. Vahid passou anos no suporte de hospedagem de sites resolvendo domínios, registros DNS, certificados SSL e entrega de e-mails para clientes. Ele cria as ferramentas da DNS Robot e escreve estes guias a partir dos erros que as pessoas realmente encontram.

Verificador de headers HTTP

Analise cabeçalhos de resposta HTTP e classificação de cabeçalhos de segurança