Erro 520 da Cloudflare: o que é e como resolver

Advertisement
O que é o erro 520 da Cloudflare?
O erro 520 é um dos códigos de status próprios da Cloudflare. A página mostra "Web server is returning an unknown error" (o servidor web está retornando um erro desconhecido) com Error code 520, um Ray ID e três quadros: o seu navegador (funcionando), a Cloudflare (funcionando) e o host (erro).
A documentação da Cloudflare o define assim: "the origin server returns an empty, unknown, or unexpected response to Cloudflare", ou seja, o servidor de origem devolve à Cloudflare uma resposta vazia, desconhecida ou inesperada. Em outras palavras, a Cloudflare se conectou ao servidor real do site (a origem), mas o que voltou não era uma resposta HTTP válida que ela pudesse repassar: sem código de status, uma resposta vazia, uma conexão redefinida ou algo que ela não conseguiu interpretar.
O 520 é um erro genérico. A Cloudflare usa códigos mais específicos quando consegue identificar o que deu errado (conexão recusada, tempo esgotado, falha de SSL), então um 520 significa que a origem respondeu de um jeito que a Cloudflare não conseguiu classificar.
Erro 520 vs. 521, 522, 523, 524, 525 e 526
Todos os códigos 52x da Cloudflare descrevem um problema entre a Cloudflare e a origem. O número diz onde procurar:
| Código | Texto da página | O que aconteceu |
|---|---|---|
| 520 | Web server is returning an unknown error | Resposta vazia, desconhecida ou inesperada da origem |
| 521 | Web server is down | A origem recusou a conexão |
| 522 | Connection timed out | A Cloudflare não conseguiu concluir uma conexão com a origem |
| 523 | Origin is unreachable | Não há rota até a origem (verifique o IP da origem no DNS) |
| 524 | A timeout occurred | Conectou, mas a origem não respondeu a tempo |
| 525 | SSL handshake failed | O handshake HTTPS com a origem falhou |
| 526 | Invalid SSL certificate | O certificado da origem não é válido para o modo Full (strict) |
Se a página mostrar um 502 ou 504 comum, veja 502 Bad Gateway e 504 Gateway Timeout. Para 521 e 522, verifique de fora se a porta 443 ou 80 da origem aceita conexões com o Verificador de Portas. Para 525 e 526, o Verificador de SSL mostra o certificado da origem, e o guia do ERR_SSL_VERSION_OR_CIPHER_MISMATCH cobre problemas de versão de TLS e de cifras.
Advertisement
O que causa o erro 520?
A Cloudflare lista estas causas na documentação de solução de problemas:
O servidor de origem trava ou está mal configurado, por exemplo um processo PHP ou Node que morre no meio da requisição.
Um firewall ou plugin de segurança bloqueia os IPs da Cloudflare na origem, então as conexões são cortadas em vez de respondidas.
Os cabeçalhos de resposta passam de 128 KB, muitas vezes por causa de cookies demais ou grandes demais.
Respostas vazias ou malformadas, sem código de status HTTP nem corpo.
Cabeçalhos de resposta ausentes, ou uma origem que não retorna respostas de erro HTTP adequadas.
Uma configuração de HTTP/2 incorreta na origem quando o HTTP/2 to Origin está ativado.
Authenticated Origin Pulls ativado na Cloudflare enquanto a origem não está configurada para isso.
Se você é um visitante
Você não consegue consertar o servidor do site, mas vale tentar duas coisas. Recarregue depois de um minuto, porque um 520 causado por um travamento ou uma reinicialização pode sumir sozinho. E limpe os cookies do site: quando a causa são cabeçalhos grandes demais formados por cookies, apagar os cookies desse site (ícone à esquerda da barra de endereço → Cookies e dados do site) pode resolver para você.
Se continuar falhando, avise o dono do site e inclua o Ray ID que aparece no rodapé da página de erro, que permite a ele encontrar a sua requisição exata na Cloudflare.
Advertisement
Correção 1: leia os logs de erro do servidor de origem
A primeira recomendação da Cloudflare é olhar os logs da origem no horário do erro. Travamentos, processos encerrados por falta de memória e conexões redefinidas aparecem ali:
sudo tail -n 50 /var/log/nginx/error.log # or /var/log/apache2/error.log
journalctl -u your-app --since "15 min ago" # app service logs
pm2 logs --lines 50 # Node apps under PM2
dmesg -T | grep -i "killed process" # out-of-memory killsCorreção 2: teste a origem sem a Cloudflare
Peça a página diretamente à origem, sem passar pela Cloudflare, e veja a resposta bruta. Com o curl você pode apontar o hostname para o IP da origem em uma única requisição:
# Substitua 203.0.113.10 pelo IP do seu servidor de origem
curl -sv --resolve example.com:443:203.0.113.10 https://example.com/broken-page -o /dev/null
# Procure: uma linha de status normal "HTTP/1.1 200" (ou HTTP/2 200) e os cabeçalhos.
# "Empty reply from server" ou "Connection reset by peer" aqui reproduz o 520.A Cloudflare também sugere uma solução temporária: mudar o registro DNS para Somente DNS (DNS only, nuvem cinza) ou pausar a Cloudflare, para que os visitantes cheguem direto à origem enquanto você investiga. Lembre-se de que isso expõe o IP da sua origem. A Consulta DNS do DNS Robot mostra quais IPs o mundo vê agora para o seu domínio, e o Verificador de Cabeçalhos HTTP mostra os cabeçalhos server: cloudflare e cf-ray quando o tráfego passa pela Cloudflare.
Advertisement
Correção 3: libere as faixas de IP da Cloudflare na origem
Todo o tráfego dos visitantes chega à sua origem a partir das faixas de IP da Cloudflare, então um firewall, uma jail do fail2ban ou um plugin de segurança que limita ou bloqueia IPs "suspeitos" pode acabar bloqueando a própria Cloudflare. Libere as faixas publicadas em https://www.cloudflare.com/ips/ no firewall e nos plugins de segurança, e garanta que o seu servidor web leia o IP real do visitante no cabeçalho CF-Connecting-IP, para que os limites de taxa se apliquem aos visitantes, e não à Cloudflare.
Correção 4: mantenha os cabeçalhos de resposta abaixo de 128 KB
A Cloudflare rejeita respostas da origem cujos cabeçalhos passam de 128 KB, e os cookies são o motivo habitual. Verifique quantos cabeçalhos Set-Cookie uma página envia e qual é o tamanho deles. Remova os cookies de que você não precisa mais, mantenha os cookies de sessão pequenos e evite apps ou plugins que gravam muitos dados em cookies.
Advertisement
Correção 5: verifique o HTTP/2 to Origin e o Authenticated Origin Pulls
HTTP/2 to Origin: se ele está ativado na Cloudflare (nas configurações de Speed) mas a configuração de HTTP/2 da origem está quebrada, as respostas podem falhar com um 520. A Cloudflare sugere verificar a configuração de HTTP/2 da origem, ou desativar o HTTP/2 to Origin para confirmar.
Authenticated Origin Pulls: se estiver ativado na Cloudflare, a origem precisa estar configurada para aceitar o certificado de cliente da Cloudflare. Se não estiver, desative o recurso ou termine a configuração na origem.
Correção 6: o que enviar ao suporte da Cloudflare
Se a origem parece saudável e o 520 continua, a Cloudflare pede:
As URLs completas em que o erro acontece.
O ID cf-ray da página de erro.
A saída de
http://yourdomain.com/cdn-cgi/trace.Dois arquivos HAR (DevTools → Rede → exportar), um com a Cloudflare ativada e outro com ela desativada.
Veja se um site está atrás da Cloudflare
O Verificador de Cabeçalhos HTTP do DNS Robot mostra o código de status, o cabeçalho server e o ID cf-ray de qualquer URL, para você confirmar um 520 e se a Cloudflare está na frente do site.
Testar Verificador de Cabeçalhos HTTPAdvertisement
Perguntas Frequentes
É um erro da Cloudflare que significa que o servidor de origem do site devolveu à Cloudflare uma resposta vazia, desconhecida ou inesperada. O seu navegador e a Cloudflare estão funcionando; é o servidor de origem que não está respondendo direito.