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 GatewayComo enviar
| Node.js / Express | res.status(502).end() |
|---|---|
| Python / Flask | return '', 502 |
| nginx | return 502; |
Como verificar
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/