Erreur Cloudflare 520 : Unknown Error
Quand votre serveur d'origine retourne une réponse incompréhensible
L'erreur 520 est un code de statut spécifique à Cloudflare qui n'existe pas dans la spécification HTTP standard. Elle indique que le serveur d'origine a retourné une réponse vide, mal formée ou inattendue que Cloudflare ne peut pas interpréter ou transmettre au client.
Cette erreur est particulièrement frustrante car elle est souvent intermittente et difficile à reproduire. La réponse du serveur d'origine est techniquement reçue, mais son contenu est invalide. Contrairement au 521 (serveur inaccessible) ou au 522 (timeout de connexion), le 520 indique un problème de communication au niveau du protocole HTTP.
Pour les sites derrière Cloudflare, surveiller les erreurs 520 est essentiel. MoniTao détecte ces erreurs en temps réel et vous alerte avant que vos utilisateurs ne se plaignent. Comprendre les causes permet de mettre en place les bonnes préventions.
Causes courantes de l'erreur 520
L'erreur 520 a généralement sa source sur le serveur d'origine, pas chez Cloudflare. Voici les causes les plus fréquentes.
- Connexion fermée prématurément : le serveur d'origine ferme la connexion TCP avant d'envoyer une réponse HTTP complète. Cela peut arriver lors d'un crash PHP, d'un timeout applicatif, ou d'un kill de processus.
- Headers HTTP invalides : les headers de réponse sont mal formés, trop volumineux (>8KB), ou contiennent des caractères non valides. Cloudflare ne peut pas parser la réponse.
- Réponse vide : le serveur renvoie une connexion HTTP sans body ni headers valides. Cela arrive souvent avec des scripts qui plantent avant de générer du contenu.
- Keepalive mal configuré : le serveur d'origine ferme les connexions keepalive avant que Cloudflare ne les réutilise, causant des erreurs de réponse tronquée.
Diagnostic de l'erreur 520
Pour résoudre un 520, il faut identifier si le problème vient de votre application, de votre serveur web, ou de la configuration réseau.
- Tester sans Cloudflare : modifiez votre fichier hosts pour pointer directement vers l'IP de votre serveur d'origine. Si l'erreur disparaît, le problème est spécifique à la communication Cloudflare-origine.
- Vérifier les logs serveur : consultez les logs d'erreur Apache/Nginx et les logs PHP/application. Recherchez les erreurs fatales, les segfaults, et les timeouts.
- Utiliser le Ray ID : chaque erreur Cloudflare inclut un Ray ID. Utilisez-le dans le tableau de bord Cloudflare pour voir les détails de la requête et les headers reçus.
- Surveiller les ressources : vérifiez l'utilisation CPU, mémoire et les processus du serveur. Un serveur saturé peut fermer des connexions de manière aléatoire.
Solutions pour corriger l'erreur 520
La résolution dépend de la cause identifiée. Voici les corrections les plus courantes.
- Corriger les erreurs applicatives : corrigez les bugs PHP qui causent des crashes ou des erreurs fatales. Assurez-vous que votre application retourne toujours une réponse HTTP valide, même en cas d'erreur.
- Augmenter les ressources : si le serveur manque de mémoire ou de CPU, augmentez les limites PHP (memory_limit, max_execution_time) ou les ressources serveur.
- Configurer le keepalive : assurez-vous que les timeouts keepalive du serveur d'origine sont supérieurs à ceux de Cloudflare (généralement 300 secondes minimum).
- Valider les headers : vérifiez que votre application n'envoie pas de headers trop longs ou mal encodés. Utilisez curl -I pour inspecter les headers bruts.
Configuration pour prévenir les 520
Voici des configurations recommandées pour éviter les erreurs 520 :
# Nginx - /etc/nginx/nginx.conf
# Augmenter les timeouts pour Cloudflare
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
# Keepalive avec Cloudflare
keepalive_timeout 300;
keepalive_requests 10000;
# Headers plus grands si nécessaire
large_client_header_buffers 4 16k;
# PHP - php.ini
memory_limit = 256M
max_execution_time = 30
output_buffering = 4096
# Gestion d'erreurs (ne jamais envoyer une réponse vide)
display_errors = Off
log_errors = On
error_log = /var/log/php-errors.log
Ces configurations assurent que le serveur maintient les connexions ouvertes assez longtemps pour Cloudflare et que les erreurs sont loguées plutôt que d'interrompre la réponse.
Prévenir les erreurs 520
Voici les bonnes pratiques pour minimiser les occurrences de cette erreur.
- Monitoring continu : utilisez MoniTao pour détecter les 520 dès qu'ils apparaissent. Configurez des alertes pour réagir avant que le problème ne s'aggrave.
- Gestion d'erreurs robuste : implémentez des try-catch globaux dans votre application pour toujours retourner une réponse HTTP valide, même en cas d'exception.
- Tests réguliers : testez périodiquement votre site en contournant Cloudflare pour détecter les problèmes spécifiques à la communication proxy.
- Logs centralisés : corrélez les logs Cloudflare avec vos logs serveur pour identifier rapidement la cause des erreurs.
Checklist diagnostic 520
- Test direct du serveur d'origine (bypass Cloudflare)
- Logs d'erreur serveur web consultés
- Logs d'erreur PHP/application vérifiés
- Ressources serveur (CPU, RAM) surveillées
- Timeouts et keepalive correctement configurés
- Headers de réponse validés avec curl -I
Questions fréquentes
Comment tester mon site sans passer par Cloudflare ?
Modifiez le fichier hosts de votre machine (C:\Windows\System32\drivers\etc\hosts ou /etc/hosts) pour faire pointer votre domaine directement vers l'IP de votre serveur d'origine. Vous verrez alors les erreurs réelles sans l'intermédiaire Cloudflare.
L'erreur 520 vient-elle de Cloudflare ou de mon serveur ?
Le code 520 est généré par Cloudflare, mais la cause est presque toujours sur votre serveur d'origine. Cloudflare utilise ce code quand il reçoit une réponse qu'il ne peut pas interpréter correctement.
Comment utiliser le Ray ID pour diagnostiquer ?
Le Ray ID apparaît sur la page d'erreur. Dans le tableau de bord Cloudflare, allez dans Analytics > Traffic, filtrez par ce Ray ID pour voir les détails de la requête, les headers envoyés et reçus.
MoniTao détecte-t-il les erreurs 520 ?
Oui, MoniTao détecte tous les codes 5xx, y compris les codes spécifiques à Cloudflare (520-527). Vous recevrez une alerte dès que l'erreur est détectée.
Pourquoi l'erreur 520 est-elle intermittente ?
Les 520 intermittents sont souvent liés à des pics de charge qui épuisent les ressources, des conditions de course dans le code, ou des problèmes de keepalive. Surveillez les patterns temporels pour identifier la cause.
Quelle est la différence entre 520, 521, et 522 ?
Le 520 indique une réponse invalide, le 521 que le serveur refuse la connexion (serveur down), et le 522 que la connexion a expiré (timeout réseau). Le 520 est le plus difficile à diagnostiquer car la connexion s'établit mais la réponse est incorrecte.
Conclusion
L'erreur Cloudflare 520 est un signal que votre serveur d'origine renvoie des réponses invalides ou tronquées. Bien que le code soit généré par Cloudflare, la solution se trouve presque toujours sur votre infrastructure : erreurs applicatives, configuration serveur, ou ressources insuffisantes.
Avec MoniTao, détectez les erreurs 520 en temps réel et agissez avant que vos utilisateurs ne soient impactés. Le monitoring proactif combiné à une bonne gestion des erreurs et des logs vous permet de résoudre ces problèmes rapidement.
Liens utiles
PrĂŞt Ă dormir sur vos deux oreilles ?
Commencez gratuitement, sans carte bancaire.