Error 520 de Cloudflare: qué significa y cómo solucionarlo

Advertisement
¿Qué es el error 520 de Cloudflare?
El error 520 es uno de los códigos de estado propios de Cloudflare. La página dice "Web server is returning an unknown error" (el servidor web está devolviendo un error desconocido) con Error code 520, un Ray ID y tres recuadros: tu navegador (funciona), Cloudflare (funciona) y el host (error).
La documentación de Cloudflare lo define así: "the origin server returns an empty, unknown, or unexpected response to Cloudflare", es decir, el servidor de origen devuelve a Cloudflare una respuesta vacía, desconocida o inesperada. Dicho de otro modo, Cloudflare se conectó al servidor real del sitio web (el origen), pero lo que recibió no era una respuesta HTTP válida que pudiera reenviar: sin código de estado, una respuesta vacía, una conexión restablecida o algo que no podía interpretar.
El 520 es un código comodín. Cloudflare usa códigos más específicos cuando puede saber qué falló (conexión rechazada, tiempo de espera agotado, fallo de SSL), así que un 520 significa que el origen respondió de una forma que Cloudflare no supo clasificar.
Error 520 frente a 521, 522, 523, 524, 525 y 526
Todos los códigos 52x de Cloudflare describen un problema entre Cloudflare y el origen. El número te dice dónde buscar:
| Código | Texto de la página | Qué pasó |
|---|---|---|
| 520 | Web server is returning an unknown error | Respuesta vacía, desconocida o inesperada del origen |
| 521 | Web server is down | El origen rechazó la conexión |
| 522 | Connection timed out | Cloudflare no pudo completar una conexión con el origen |
| 523 | Origin is unreachable | No hay ruta hacia el origen (revisa la IP del origen en el DNS) |
| 524 | A timeout occurred | Hubo conexión, pero el origen no respondió a tiempo |
| 525 | SSL handshake failed | Falló el handshake HTTPS con el origen |
| 526 | Invalid SSL certificate | El certificado del origen no es válido para el modo Full (strict) |
Si la página muestra un 502 o un 504 sin más, consulta 502 Bad Gateway y 504 Gateway Timeout. Para los errores 521 y 522, comprueba desde fuera con el Port Checker si el puerto 443 u 80 del origen acepta conexiones. Para los errores 525 y 526, el SSL Checker muestra el certificado del origen, y ERR_SSL_VERSION_OR_CIPHER_MISMATCH explica los problemas de versión de TLS y de cifrado.
Advertisement
¿Qué causa un error 520?
Cloudflare enumera estas causas en su documentación de solución de problemas:
El servidor de origen se cae o está mal configurado, por ejemplo un proceso de PHP o de Node que muere a mitad de una petición.
Un firewall o un plugin de seguridad bloquea las IP de Cloudflare en el origen, así que las conexiones se cortan en lugar de recibir respuesta.
Las cabeceras de respuesta superan los 128 KB, a menudo por tener demasiadas cookies o cookies demasiado grandes.
Respuestas vacías o mal formadas, sin código de estado HTTP ni cuerpo.
Faltan cabeceras de respuesta, o el origen no devuelve respuestas de error HTTP correctas.
Una configuración de HTTP/2 incorrecta en el origen cuando HTTP/2 to Origin está activado.
Authenticated Origin Pulls activado en Cloudflare sin que el origen esté preparado para ello.
Si eres un visitante
No puedes arreglar el servidor del sitio web, pero vale la pena probar dos cosas. Recarga pasado un minuto, porque un 520 causado por una caída o un reinicio puede desaparecer solo. Y borra las cookies del sitio: cuando la causa son cabeceras demasiado grandes generadas por las cookies, eliminar las cookies de ese sitio (icono a la izquierda de la barra de direcciones → Cookies y datos de sitios) puede solucionarlo en tu caso.
Si sigue fallando, avisa al propietario del sitio e incluye el Ray ID que aparece al pie de la página de error, que le permite encontrar tu petición exacta en Cloudflare.
Advertisement
Solución 1: lee los registros de errores del servidor de origen
La primera recomendación de Cloudflare es revisar los registros del origen a la hora del error. Ahí aparecen las caídas, los procesos terminados por falta de memoria y las conexiones restablecidas:
sudo tail -n 50 /var/log/nginx/error.log # o /var/log/apache2/error.log
journalctl -u your-app --since "15 min ago" # registros del servicio de la app
pm2 logs --lines 50 # apps Node con PM2
dmesg -T | grep -i "killed process" # procesos terminados por falta de memoriaSolución 2: prueba el origen sin Cloudflare
Pide la página directamente al origen, sin pasar por Cloudflare, y examina la respuesta en bruto. Con curl puedes apuntar el nombre de host a la IP del origen para una sola petición:
# Sustituye 203.0.113.10 por la IP de tu servidor de origen
curl -sv --resolve example.com:443:203.0.113.10 https://example.com/broken-page -o /dev/null
# Busca: una línea de estado normal "HTTP/1.1 200" (o HTTP/2 200) y sus cabeceras.
# Si aquí aparece "Empty reply from server" o "Connection reset by peer", has reproducido el 520.Cloudflare también sugiere una solución temporal: poner el registro DNS en Solo DNS (DNS only, nube gris) o pausar Cloudflare, para que los visitantes lleguen directamente al origen mientras investigas. Recuerda que así expones la IP de tu origen. El DNS Lookup de DNS Robot muestra qué IP ve ahora mismo todo el mundo para tu dominio, y la herramienta HTTP Headers muestra las cabeceras server: cloudflare y cf-ray cuando el tráfico pasa por Cloudflare.
Advertisement
Solución 3: permite los rangos de IP de Cloudflare en el origen
Todo el tráfico de los visitantes llega a tu origen desde los rangos de IP de Cloudflare, así que un firewall, una jail de fail2ban o un plugin de seguridad que limita o bloquea las IP "sospechosas" puede acabar bloqueando al propio Cloudflare. Permite los rangos publicados en https://www.cloudflare.com/ips/ en tu firewall y en tus plugins de seguridad, y asegúrate de que tu servidor web lee la IP real del visitante desde la cabecera CF-Connecting-IP, para que los límites de peticiones se apliquen a los visitantes y no a Cloudflare.
Solución 4: mantén las cabeceras de respuesta por debajo de 128 KB
Cloudflare rechaza las respuestas del origen cuyas cabeceras superan los 128 KB, y las cookies suelen ser el motivo. Comprueba cuántas cabeceras Set-Cookie envía una página y qué tamaño tienen. Elimina las cookies que ya no necesites, mantén pequeñas las cookies de sesión y evita las aplicaciones o plugins que guardan muchos datos en cookies.
Advertisement
Solución 5: revisa HTTP/2 to Origin y Authenticated Origin Pulls
HTTP/2 to Origin: si está activado en Cloudflare (en los ajustes de Speed, o Velocidad) pero la configuración de HTTP/2 del origen está rota, las respuestas pueden fallar con un 520. Cloudflare sugiere revisar la configuración de HTTP/2 del origen, o desactivar HTTP/2 to Origin para confirmarlo.
Authenticated Origin Pulls: si está activado en Cloudflare, el origen debe estar configurado para aceptar el certificado de cliente de Cloudflare. Si no lo está, desactiva la función o termina la configuración del origen.
Solución 6: qué enviar al soporte de Cloudflare
Si el origen parece estar bien y el 520 continúa, Cloudflare pide:
Las URL completas en las que se produce el error.
El ID cf-ray de la página de error.
La salida de
http://yourdomain.com/cdn-cgi/trace.Dos archivos HAR (DevTools → Red → exportar), uno con Cloudflare activado y otro con Cloudflare desactivado.
Comprueba si un sitio está detrás de Cloudflare
El Verificador de Cabeceras HTTP de DNS Robot muestra el código de estado, la cabecera server y el ID cf-ray de cualquier URL, para que puedas confirmar un 520 y saber si Cloudflare está delante del sitio.
Probar Verificador de Cabeceras HTTPAdvertisement
Preguntas frecuentes
Es un error de Cloudflare que significa que el servidor de origen del sitio web devolvió a Cloudflare una respuesta vacía, desconocida o inesperada. Tu navegador y Cloudflare funcionan; es el servidor de origen el que no responde como debe.