Erreur 520 Cloudflare : signification et solutions

Advertisement
Qu'est-ce que l'erreur 520 de Cloudflare ?
L'erreur 520 fait partie des codes de statut propres à Cloudflare. La page affiche « Web server is returning an unknown error » avec Error code 520, un Ray ID et trois cases : votre navigateur (Working), Cloudflare (Working) et l'hôte (Error).
La documentation de Cloudflare la définit ainsi : « the origin server returns an empty, unknown, or unexpected response to Cloudflare », autrement dit le serveur d'origine renvoie à Cloudflare une réponse vide, inconnue ou inattendue. Cloudflare s'est bien connecté au vrai serveur du site web (l'origine), mais ce qui est revenu n'était pas une réponse HTTP valide qu'il pouvait transmettre : aucun code de statut, une réponse vide, une connexion réinitialisée, ou quelque chose qu'il n'a pas su analyser.
La 520 est une erreur fourre-tout. Cloudflare utilise des codes plus précis quand il peut identifier le problème (connexion refusée, délai dépassé, échec SSL) : une 520 signifie donc que l'origine a répondu d'une manière que Cloudflare n'a pas pu classer.
Erreur 520 ou 521, 522, 523, 524, 525 et 526 : les différences
Les codes 52x de Cloudflare décrivent tous un problème entre Cloudflare et l'origine. Le numéro vous indique où chercher :
| Code | Texte de la page | Ce qui s'est passé |
|---|---|---|
| 520 | Web server is returning an unknown error | Réponse vide, inconnue ou inattendue de l'origine |
| 521 | Web server is down | L'origine a refusé la connexion |
| 522 | Connection timed out | Cloudflare n'a pas pu établir la connexion avec l'origine |
| 523 | Origin is unreachable | Aucune route vers l'origine (vérifiez l'IP de l'origine dans le DNS) |
| 524 | A timeout occurred | Connexion établie, mais l'origine n'a pas répondu à temps |
| 525 | SSL handshake failed | La négociation HTTPS avec l'origine a échoué |
| 526 | Invalid SSL certificate | Le certificat de l'origine n'est pas valide pour le mode Full (strict) |
Si la page affiche plutôt une simple erreur 502 ou 504, consultez 502 Bad Gateway et 504 Gateway Timeout. Pour les erreurs 521 et 522, vérifiez depuis l'extérieur si le port 443 ou 80 de l'origine accepte les connexions avec le Vérificateur de ports. Pour les erreurs 525 et 526, le Vérificateur SSL affiche le certificat de l'origine, et ERR_SSL_VERSION_OR_CIPHER_MISMATCH traite des problèmes de version TLS et d'algorithmes de chiffrement.
Advertisement
Quelles sont les causes de l'erreur 520 ?
Cloudflare liste ces causes dans sa documentation de dépannage :
Le serveur d'origine plante ou est mal configuré, par exemple un processus PHP ou Node qui meurt en pleine requête.
Un pare-feu ou une extension de sécurité bloque les IP de Cloudflare sur l'origine : les connexions sont alors coupées au lieu de recevoir une réponse.
Les en-têtes de réponse dépassent 128 Ko, souvent à cause de cookies trop nombreux ou trop volumineux.
Des réponses vides ou mal formées, sans code de statut HTTP ni corps.
Des en-têtes de réponse manquants, ou une origine qui ne renvoie pas de véritables réponses d'erreur HTTP.
Une configuration HTTP/2 incorrecte sur l'origine alors que l'option HTTP/2 vers l'origine (HTTP/2 to Origin) est activée.
Authenticated Origin Pulls activé dans Cloudflare alors que l'origine n'est pas configurée pour cela.
Si vous êtes un visiteur
Vous ne pouvez pas réparer le serveur du site web, mais deux choses valent la peine d'être essayées. Rechargez au bout d'une minute, car une erreur 520 due à un plantage ou à un redémarrage peut disparaître d'elle-même. Et effacez les cookies du site : quand la cause est un ensemble d'en-têtes trop volumineux à cause des cookies, supprimer les cookies de ce site (icône à gauche de la barre d'adresse → Cookies et données de site) peut régler le problème pour vous.
Si l'erreur persiste, prévenez le propriétaire du site en lui indiquant le Ray ID affiché en bas de la page d'erreur : il pourra ainsi retrouver votre requête exacte dans Cloudflare.
Advertisement
Solution 1 : lire les journaux d'erreurs du serveur d'origine
La première recommandation de Cloudflare est de consulter les journaux de l'origine au moment de l'erreur. Les plantages, les arrêts pour manque de mémoire et les connexions réinitialisées y apparaissent :
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 killsSolution 2 : tester l'origine sans Cloudflare
Demandez la page directement à l'origine, en contournant Cloudflare, et examinez la réponse brute. Avec curl, vous pouvez faire pointer le nom d'hôte vers l'IP de l'origine le temps d'une seule requête :
# Remplacez 203.0.113.10 par l'IP de votre serveur d'origine
curl -sv --resolve example.com:443:203.0.113.10 https://example.com/broken-page -o /dev/null
# À chercher : une ligne de statut normale "HTTP/1.1 200" (ou HTTP/2 200) suivie des en-têtes.
# "Empty reply from server" ou "Connection reset by peer" ici reproduit l'erreur 520.Cloudflare propose aussi une solution de contournement temporaire : passer l'enregistrement DNS en DNS uniquement (nuage gris) ou mettre Cloudflare en pause, afin que les visiteurs atteignent directement l'origine pendant votre enquête. N'oubliez pas que cela expose l'IP de votre origine. La Recherche DNS de DNS Robot montre quelles IP le monde voit actuellement pour votre domaine, et l'outil En-têtes HTTP affiche les en-têtes server: cloudflare et cf-ray quand le trafic passe par Cloudflare.
Advertisement
Solution 3 : autoriser les plages d'IP de Cloudflare sur l'origine
Tout le trafic des visiteurs atteint votre origine depuis les plages d'IP de Cloudflare : un pare-feu, une jail fail2ban ou une extension de sécurité qui limite ou bloque les IP « suspectes » peut donc finir par bloquer Cloudflare lui-même. Autorisez les plages publiées sur https://www.cloudflare.com/ips/ dans votre pare-feu et vos extensions de sécurité, et assurez-vous que votre serveur web lit la véritable IP du visiteur dans l'en-tête CF-Connecting-IP, afin que les limites de débit s'appliquent aux visiteurs et non à Cloudflare.
Solution 4 : garder les en-têtes de réponse sous 128 Ko
Cloudflare rejette les réponses de l'origine dont les en-têtes dépassent 128 Ko, et les cookies en sont la cause habituelle. Vérifiez combien d'en-têtes Set-Cookie une page envoie et quelle est leur taille. Supprimez les cookies dont vous n'avez plus besoin, gardez des cookies de session légers, et évitez les applications ou extensions qui écrivent de grandes quantités de données dans les cookies.
Advertisement
Solution 5 : vérifier HTTP/2 vers l'origine et Authenticated Origin Pulls
HTTP/2 vers l'origine (HTTP/2 to Origin) : si l'option est activée dans Cloudflare (dans les réglages Vitesse) mais que la configuration HTTP/2 de l'origine est défaillante, les réponses peuvent échouer avec une erreur 520. Cloudflare conseille de vérifier la configuration HTTP/2 de l'origine, ou de désactiver HTTP/2 vers l'origine pour confirmer.
Authenticated Origin Pulls : si cette fonction est activée dans Cloudflare, l'origine doit être configurée pour accepter le certificat client de Cloudflare. Si ce n'est pas le cas, désactivez la fonction ou terminez la configuration de l'origine.
Solution 6 : quoi envoyer au support Cloudflare
Si l'origine semble en bonne santé et que l'erreur 520 persiste, Cloudflare demande :
Les URL complètes où l'erreur se produit.
L'identifiant cf-ray affiché sur la page d'erreur.
Le résultat de
http://yourdomain.com/cdn-cgi/trace.Deux fichiers HAR (outils de développement → Réseau → exporter), l'un avec Cloudflare activé, l'autre avec Cloudflare désactivé.
Vérifiez si un site est derrière Cloudflare
Le Vérificateur d'en-têtes HTTP de DNS Robot affiche le code de statut, l'en-tête server et l'identifiant cf-ray de n'importe quelle URL : vous pouvez ainsi confirmer une erreur 520 et savoir si Cloudflare se trouve devant le site.
Essayer Vérificateur d'en-têtes HTTPAdvertisement
Questions fréquemment posées
C'est une erreur Cloudflare qui signifie que le serveur d'origine du site web a renvoyé à Cloudflare une réponse vide, inconnue ou inattendue. Votre navigateur et Cloudflare fonctionnent ; c'est le serveur d'origine qui ne répond pas correctement.