HTTP 502 Bad Gateway

A reclamação do intermediário: um proxy ou CDN perguntou ao servidor real e recebeu lixo — ou nada — de volta.

O que significa o HTTP 502

HTTP 502 Bad Gateway vem de um intermediário — nginx, um load balancer, Cloudflare — que encaminhou sua requisição a um servidor upstream e recebeu uma resposta inválida: uma conexão recusada, uma falha no meio da resposta, ou bytes que não se analisam como HTTP.

O culpado nomeado quase nunca é o próprio proxy; é o servidor de aplicação atrás dele que está fora do ar, sobrecarregado ou inacessível.

Causas comuns de erros 502

  • O servidor de aplicação (PHP-FPM, Node, gunicorn, etc.) travou ou não está em execução.
  • O proxy aponta para a porta/socket errado, ou um firewall bloqueia a conexão upstream.
  • A resposta upstream excedeu os buffers ou atingiu o timeout no meio da transferência.
  • Um deploy reiniciou os backends enquanto o tráfego estava fluindo.
  • Com CDNs como Cloudflare: o servidor de origem está fora do ar enquanto a edge está bem.

Como corrigir como visitante

  • Recarregue após um minuto — 502s durante deploys se resolvem sozinhos.
  • Verifique a página de status do serviço se isso continuar acontecendo.

Como corrigir como desenvolvedor

  • Verifique se o processo upstream está vivo e escutando no endereço que o proxy espera.
  • Leia o log de erros do proxy — o nginx informa exatamente por quê (connect() failed, upstream prematurely closed, etc.).
  • Verifique portas, caminhos de socket unix e regras de firewall entre proxy e aplicação.
  • Adicione health checks para que o load balancer pare de rotear para instâncias mortas.

Exemplo de resposta

HTTP/1.1 502 Bad Gateway
Server: nginx
Content-Type: text/html

<html><body><h1>502 Bad Gateway</h1></body></html>

Perguntas frequentes

Qual é a diferença entre 502 e 504?

502 significa que o upstream respondeu com algo inválido (ou recusou a conexão); 504 significa que ele simplesmente não respondeu dentro do tempo limite.

Por que o Cloudflare mostra 502?

A edge do Cloudflare não conseguiu obter uma resposta válida do seu servidor de origem — a origem está fora do ar, inacessível ou retornando respostas malformadas.

Um 502 é temporário?

Geralmente sim — deploys e reinícios causam 502s breves. 502s persistentes significam que o backend está genuinamente fora do ar ou mal configurado.