Erro 502 Bad Gateway: o que significa e como resolver

Publicado:

16 min de leitura

Acar Diveroli
Autor: Acar Diveroli
Uma linha vai de CLIENT por uma elipse pontilhada GATEWAY e se rompe antes de UPSTREAM; uma seta azul 502 volta para CLIENT

Você abre um site e aparece uma página branca quase vazia: "502 Bad Gateway" em letras grandes e a palavra "nginx" embaixo. Em outro site, a página tem o título "Proxy Error" e diz que o servidor proxy recebeu uma resposta inválida de um servidor upstream. Atrás do Cloudflare, ela parece mais amigável: três ícones em fila, e o último, "Host", marcado com "Error".

Os três são o mesmo código de status HTTP e, na maioria dos casos, não há nada errado do seu lado. A seguir: o que "gateway" e "upstream" significam, como ler cada versão da página, o que você pode tentar como visitante, como o dono de um site encontra a causa nos logs e o que significa um 502 vindo do seu próprio proxy.

O que significa 502 Bad Gateway?

A maioria dos sites não é um único computador. O endereço que você digita costuma levar a um servidor da frente: um reverse proxy como nginx ou Apache, um balanceador de carga ou uma CDN (rede de distribuição de conteúdo, um serviço que responde por um site a partir de muitos locais) como o Cloudflare. O servidor da frente não monta a página. Ele repassa a sua requisição ao servidor por trás dele, onde roda a aplicação do site, e devolve a resposta. Forward proxy e reverse proxy: qual é a diferença? explica essa configuração.

O padrão HTTP chama o servidor da frente de gateway e o de trás de servidor upstream. A RFC 9110 define o 502 em uma frase: um servidor que atua como gateway ou proxy recebeu uma resposta inválida do servidor por trás dele. "Inválida" inclui uma conexão recusada, uma conexão que caiu no meio e uma resposta que o gateway não conseguiu ler.

O erro 502 é culpa sua?

Quase nunca. A sua conexão entregou a requisição ao servidor da frente do site; a falha aconteceu depois, entre duas máquinas que pertencem ao site. A exceção é uma VPN, um proxy ou uma extensão de VPN: eles buscam as páginas por você, então também são um gateway, e quando não conseguem uma resposta utilizável do site podem mostrar um 502 próprio.

Como um erro 502 acontece, passo a passo?

  1. O seu navegador encontra o servidor da frente. O DNS, a agenda de endereços da internet, devolve o endereço da CDN ou do reverse proxy, não o da aplicação.
  2. O servidor da frente aceita a sua requisição e a encaminha ao servidor upstream, ou seja, à aplicação: um processo PHP, um app Node.js ou um entre vários servidores de um grupo.
  3. O servidor upstream falha. Ele recusa a conexão porque não está rodando, desliga no meio do caminho ou envia algo que não é HTTP válido.
  4. O gateway responde 502. Se o servidor upstream só estava lento e o gateway parou de esperar, o código costuma ser 504.
  5. O seu navegador mostra a página de erro do gateway, ou uma página própria se o gateway enviou uma vazia.

Como é a página de erro 502 e quem a envia?

A aparência da página diz qual programa desistiu. O Chrome e o Edge mostram a própria página só quando o gateway envia um 502 sem página de erro.

O que você vêQuem enviaSignificado comum
"502 Bad Gateway", "nginx" embaixonginx, o reverse proxy do siteA aplicação por trás do nginx está fora do ar ou travou
"Proxy Error … received an invalid response from an upstream server", "Reason: Error reading from remote server"Apache httpdO backend desligou ou passou do timeout de proxy do Apache
"Error 502, Bad gateway", ícones de Browser, Cloudflare e Host, "Host: Error", um Ray IDCloudflareO próprio servidor do site falhou; o Cloudflare funciona
Error 520CloudflareO servidor do site enviou uma resposta vazia ou estranha
Error 521CloudflareO servidor do site recusou a conexão
Error 522CloudflareA conexão com o servidor do site esgotou o tempo
Error 523CloudflareNão há rota até o servidor do site
Error 524CloudflareO servidor do site não devolveu nada a tempo
"Esta página não está funcionando", "HTTP ERROR 502"Chrome ou EdgeUm 502 vazio, sem detalhes

A linha "Reason" do Apache dá nome à falha exata. O mesmo título "Proxy Error" com "Error during SSL Handshake with remote server" vem com o status 500: o Apache não conseguiu estabelecer a conexão criptografada com o backend. O Cloudflare explica cada um dos seus códigos no guia de erros 5xx (no 524, ele espera 125 segundos por padrão); todos são problemas entre o Cloudflare e o servidor do site.

Qual é a diferença entre 502, 503 e 504?

CódigoNomeO que aconteceuQuem resolve
500Internal Server ErrorA própria aplicação encontrou um erroO dono do site
502Bad GatewayO gateway recebeu uma resposta quebrada, ou nenhumaO dono do site
503Service UnavailableSobrecarga ou manutenção programadaNormalmente, o tempo
504Gateway TimeoutO gateway esperou demaisO dono do site

A RFC 9110 define o 504 nos mesmos termos de gateway: "uma resposta inválida" contra "nenhuma resposta a tempo". Para o visitante, o conselho é o mesmo nos três casos. Para o dono, o 502 aponta para uma aplicação parada ou com defeito, e o 504, para uma aplicação lenta. Um detalhe: quando o Apache não consegue se conectar ao backend, ele responde 503.

O que você pode fazer como visitante?

  1. Espere um minuto e recarregue. Muitos 502 duram só o tempo de uma aplicação reiniciar, por exemplo durante uma atualização. Pressione F5 ou o botão Recarregar da página de erro do Chrome; uma ou duas vezes bastam.
  2. Veja se o site caiu para todo mundo. Abra o site no celular pelos dados móveis em vez do Wi-Fi. Se falhar lá também, o problema é do site; muitos serviços anunciam quedas em uma página de status.
  3. Desligue a sua VPN ou o seu proxy. Desligue o app de VPN, a extensão de VPN ou o proxy e recarregue. No Chrome, as extensões ficam em Mais > Extensões > Gerenciar extensões (os passos do Google). Se a página carregar agora, o servidor da VPN era o gateway que falhou. Não sabe se há um proxy configurado? Servidor proxy não está respondendo mostra onde olhar.
  4. Se o site mudou de servidor há pouco, consulte o endereço de novo. Raramente, o seu computador ainda guarda um endereço antigo de um site que trocou de hospedagem. Reiniciar o computador, ou limpar o cache de DNS como em O que é DNS e como mudar o seu servidor DNS?, traz o novo.
  5. Avise o site. Envie o horário, o endereço exato e o texto da página; em uma página do Cloudflare, inclua o Ray ID.

Limpar os cookies e o cache não ajuda: pelo padrão HTTP, o navegador não guarda um 502 para reutilizar, a menos que o servidor permita isso explicitamente.

Se o site é seu: o que causa um erro 502?

O visitante vê uma linha; o log de erros (error log) do seu gateway guarda o motivo. No nginx, a linha error_log do nginx.conf indica o arquivo, e os pacotes Linux do próprio nginx gravam em /var/log/nginx/error.log (error_log). O Apache chama o seu log de erros de o primeiro lugar para olhar; o Debian e o Ubuntu o mantêm em /var/log/apache2/error.log, e o Fedora e o RHEL, em /var/log/httpd/error_log. Procure o minuto em que o 502 apareceu.

Linha do log do nginxO que significaO que verificar
connect() failed (111: Connection refused) while connecting to upstreamNada escuta no endereço do upstreamO app está rodando na porta do proxy_pass?
connect() to unix:… failed (2: No such file or directory)O arquivo de socket da configuração não existeO caminho do socket, por exemplo depois de atualizar o PHP
upstream prematurely closed connection while reading response header from upstreamO app aceitou a requisição e caiuO log do próprio app, limites de memória
upstream sent too big header while reading response header from upstreamOs cabeçalhos não couberam no buffer do nginxCookies grandes; proxy_buffer_size
no live upstreams while connecting to upstreamTodos os servidores do grupo estão marcados como falhosO bloco upstream
upstream timed out (110: Connection timed out)O app foi lento demaisUm 504; proxy_read_timeout

No código-fonte do nginx, um tempo esgotado vira 504, e qualquer outra falha do servidor upstream, 502. Uma resposta cuja primeira parte não cabe em proxy_buffer_size é considerada inválida, e é por isso que cookies grandes demais terminam em 502. E 11: Resource temporarily unavailable em um socket Unix significa que a fila dele está cheia: a aplicação está sobrecarregada, não parada.

Outras causas comuns:

  • "Error reading from remote server" no Apache. O backend fechou a conexão ou ficou em silêncio além do ProxyTimeout, que por padrão é igual ao Timeout do servidor (mod_proxy). Ao contrário do nginx, o Apache mostra um backend lento como 502.
  • Keep-alive desencontrado. Os gateways mantêm abertas as conexões com o backend para reutilizá-las (keep-alive). Se a aplicação fecha conexões ociosas antes do que o gateway espera, uma requisição enviada por uma conexão que acabou de ser fechada falha. A AWS cita isso entre as causas de 502 do seu balanceador de carga e recomenda um keep-alive mais longo que o timeout de inatividade do balanceador.
  • Um firewall bloqueia a CDN. Atrás de uma CDN, todo visitante chega pelos endereços da CDN, e um plugin de segurança pode confundi-los com um ataque. O Cloudflare informa isso como 521 ou 522 e publica as suas faixas de IP em cloudflare.com/ips.
  • Deploys. Uma versão nova que reinicia a aplicação gera erros 502 até ela voltar; reiniciar um servidor de cada vez fecha essa lacuna.

Timeouts maiores não curam uma aplicação que caiu, então corrija primeiro o servidor upstream. Erros repetidos também chegam à busca: os rastreadores do Google desaceleram diante de erros de servidor, e URLs que continuam a retorná-los acabam removidas do índice. Um monitoramento que verifica a cada minuto avisa você antes. Faça essas verificações pelas saídas dos Proxies ISP em alguns países e você vê se só uma região da CDN falha, com verificações vindas de endereços fixos que você pode liberar no seu firewall.

O que significa um 502 vindo do seu próprio proxy?

Quando um scraper, uma ferramenta de monitoramento ou um app envia tráfego por um proxy, existe um segundo gateway na cadeia: o seu. Quando um forward proxy não consegue chegar ao site, muitos proxies respondem com um 502 próprio, e o site nunca vê a requisição. Os dois casos têm cara diferente:

  • O 502 do proxy responde à requisição que abre o túnel, antes de qualquer página chegar. O curl mostra CONNECT tunnel failed, response 502; o Requests, do Python, lança um ProxyError com Tunnel connection failed: 502 Bad Gateway (Max Retries Exceeded With URL: o que é e como resolver desmonta essa mensagem).
  • O 502 do site chega por um túnel que funciona, com a página de erro e os cabeçalhos do próprio site.

O que fazer, em ordem:

  1. Abra a mesma URL sem o proxy. Se falhar também, o site está fora do ar; tente mais tarde.
  2. Confira o host e a porta no seu código. Um erro de digitação falha no proxy toda vez.
  3. Tente de novo algumas vezes, com pausas cada vez maiores, e depois pare. Códigos de status HTTP no web scraping, na seção "502, 504 e erros de conexão", lista quais códigos vale a pena tentar de novo.
  4. Se a URL funciona sem o proxy, mas falha por uma saída, inicie uma nova sessão. Com os Proxies residenciais, uma nova sessão traz um novo IP de saída e outra rota.

Um 502 é uma conexão que falhou, não um bloqueio: se o site responde com 429 ou com uma página de bloqueio, diminua o ritmo em vez de trocar de endereço. E se um site começar a retornar erros 502 enquanto o seu crawler roda, o seu tráfego pode fazer parte da carga; reduza o número de requisições em paralelo.

Nível avançado: veja quem enviou o 502 com um comando

Esta parte é para quem está à vontade com a linha de comando. O curl vem com o Windows 10, o Windows 11 e o macOS; no Windows PowerShell, digite curl.exe.

bash
curl -sSI https://example.com

-I pede só os cabeçalhos; -sS esconde a barra de progresso, mas mantém as mensagens de erro. Para passar pelo seu proxy, acrescente -x http://user:pass@pr.proxynet.io:8000 antes do endereço. Rodamos o comando em uma configuração de teste no nosso próprio computador (curl 8.21.0, Windows 11). Um gateway cuja aplicação foi desligada:

text
HTTP/1.1 502 Bad Gateway
Content-Type: text/html
Content-Length: 112

Com -x, um proxy de teste instruído a chegar a uma porta onde nada escutava:

text
HTTP/1.1 502 Bad Gateway

curl: (7) CONNECT tunnel failed, response 502

A primeira linha é o status. Em um site real, um cabeçalho server: costuma nomear o programa que respondeu (cloudflare, nginx, Apache). A linha CONNECT tunnel failed só aparece quando o 502 foi gerado pelo seu próprio proxy.

Onde você pode encontrar um erro 502

Erros comuns

  • Limpar os cookies e o cache várias vezes. O 502 acontece do lado do servidor.
  • Reiniciar o roteador ou recarregar a cada segundo. A sua conexão entregou a requisição, e recargas extras só aumentam a carga.
  • Donos de sites: aumentar os timeouts para esconder os 502. No nginx, um 502 significa que a aplicação recusou a conexão, caiu ou respondeu errado.
  • Donos de sites: bloquear os endereços da CDN com um firewall ou um plugin de segurança.
  • Usuários de proxy: culpar o proxy antes de testar a URL sem ele.

Guia de decisão

A sua situaçãoO que fazer
Uma página "502 Bad Gateway", outros sites funcionamEspere um minuto e recarregue
Também falha nos dados móveisO site caiu; veja a página de status dele
Carrega com a VPN ou o proxy desligadoEscolha outra localização da VPN ou verifique o proxy
Página do Cloudflare com "Host: Error"Envie o Ray ID e o horário ao site
O seu site, o nginx diz "Connection refused"Inicie a aplicação e verifique a porta do proxy_pass
O seu site, o Apache diz "Error reading from remote server"Verifique o backend e depois o ProxyTimeout
O seu script mostra "CONNECT tunnel failed, response 502"Teste sem o proxy e depois inicie uma nova sessão

Perguntas frequentes

Quanto tempo dura um erro 502 Bad Gateway?

Não há um tempo fixo. Um reinício ou uma atualização causa erros 502 por segundos ou minutos; uma aplicação que caiu sem ninguém perceber pode retorná-los por horas.

Uma VPN ou um proxy pode causar um erro 502?

Sim. Um servidor de VPN ou um proxy busca as páginas por você; quando não consegue chegar a um site, ele mesmo pode responder com um 502. Desligue-o e recarregue; se a página carregar, escolha outra localização.

O que significa "Proxy Error: The proxy server received an invalid response from an upstream server"?

É a página 502 do Apache. O Apache roda na frente do site como reverse proxy, e a aplicação por trás dele desligou ou não respondeu a tempo. É o proxy do site, não um proxy no seu computador.

Um 502 é o mesmo que um 504?

Não, mas eles são próximos: no 502 o gateway recebeu uma resposta inválida; no 504, nenhuma resposta a tempo. O nginx usa o 504 para tempos esgotados, enquanto o Apache também mostra um backend lento como 502.

Um erro 502 prejudica o ranking de um site no Google?

Uma queda curta faz pouca diferença. Os rastreadores do Google desaceleram diante de erros de servidor, e URLs que os retornam por muito tempo acabam saindo do índice.

Por que o 502 aparece só em algumas páginas, ou só às vezes?

Uma página pesada, como uma busca, pode derrubar a aplicação; um servidor do grupo pode estar com problema; ou um keep-alive desencontrado quebra uma requisição aleatória. Compare os horários do log de erros com os endereços solicitados.

Em resumo

Um 502 Bad Gateway significa que o servidor da frente do site recebeu uma resposta quebrada, ou nenhuma, do servidor por trás dele. Como visitante, espere e recarregue, teste outra rede, desligue VPNs e proxies e informe o horário e o Ray ID se o erro continuar. Como dono do site, leia o log de erros do gateway. Como usuário de proxy, primeiro diferencie o 502 do seu proxy do 502 do site. Você pode comparar tipos de proxy para scraping e monitoramento na nossa página de proxies.