502 Bad Gateway

Um proxy recebeu uma resposta inválida do servidor por trás dele.

Quando usar

O app por trás do nginx ou de um balanceador de carga travou ou retornou lixo.

Causas comuns e soluções

Um proxy como o nginx, um load balancer ou a Cloudflare não conseguiu obter uma resposta válida da aplicação por trás dele. Causas comuns: a aplicação travou ou não está rodando, ela escuta em uma porta ou endereço diferente do que o proxy espera (127.0.0.1 em vez de 0.0.0.0 dentro do Docker), um caminho ou permissão errados no socket do PHP-FPM, ou cabeçalhos de resposta grandes demais. O log de erros do nginx diz “connection refused” ou “upstream prematurely closed connection”.

Os 502 intermitentes atrás do AWS ALB costumam ser condições de corrida do keep-alive: a aplicação fecha conexões ociosas antes do balanceador, então defina o timeout de keep-alive da aplicação acima do timeout de inatividade de 60 segundos do ALB, por exemplo server.keepAliveTimeout = 65000 no Node.js. A página de erro da Cloudflare mostra se a falha foi no navegador, na Cloudflare ou no seu host. Verifique também loops de crash no systemd ou no Kubernetes, e OOM kills no dmesg.

Erro do servidor (5xx)

Os códigos 5xx são erros do servidor: a requisição pode estar certa, mas o servidor ou algo por trás dele falhou. Vale a pena configurar alertas para eles.

Como fica

HTTP/1.1 502 Bad Gateway

Como enviar

Node.js / Expressres.status(502).end()
Python / Flaskreturn '', 502
nginxreturn 502;

Como verificar

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Abrir Códigos de status HTTP