Retour au blog Monitoring - 7 min

Erreur 522 sur Cloudflare : le handshake TCP n’aboutit pas

L’erreur 522 de Cloudflare signifie que la poignée de main TCP vers l’origine expire. Ce n’est pas une page lente : le pare-feu ou le réseau ne répond pas.

L’erreur 522 est un code Cloudflare, distinct du 521 et du 524. Cloudflare a envoyé la demande de connexion TCP vers l’IP d’origine, et la poignée de main n’a pas abouti avant son délai de connexion. Aucune requête HTTP n’est partie. Le journal d’accès du site ne contient en général pas la visite : du point de vue de l’application, il ne s’est rien passé.

Le visiteur voit une page Cloudflare « Connection timed out ». Ce n’est pas le délai de 100 secondes d’une réponse HTTP, qui correspond au 524.

Causes propres au 522

  • Le pare-feu jette les paquets des adresses Cloudflare sans répondre (DROP). La connexion reste en suspens, puis expire. Ce n’est pas un refus immédiat.
  • L’origine est tellement saturée qu’elle ne complète plus les nouvelles poignées de main. La file d’acceptation est pleine. Les clients déjà connectés peuvent encore finir une requête, les nouveaux n’entrent pas.
  • Un mauvais routage ou un filtrage chez l’hébergeur bloque le chemin depuis le réseau de Cloudflare, alors qu’un autre réseau, le vôtre, atteint encore le serveur.
  • L’IP d’origine est annoncée mais ne répond sur aucun port utile. Moins net qu’un refus : la machine est injoignable plutôt que fermée.
  • Un équipement devant le serveur (anti-DDoS de l’hébergeur) absorbe les SYN sans les transmettre.

Le code PHP, les thèmes et les index SQL n’interviennent pas : la session TCP n’existe pas.

Distinguer un silence d’un refus

  1. Confirmez le numéro 522 sur la page d’erreur. Un 521 est un refus. Un 524 est une requête déjà envoyée.
  2. Depuis un réseau qui n’est pas le serveur, tentez d’ouvrir le port 443 de l’IP d’origine. Si l’appel reste sans réponse jusqu’au délai, vous reproduisez le 522. S’il est refusé tout de suite, vous êtes plutôt sur un 521.
  3. Regardez les règles du pare-feu à la même minute. Un DROP des plages Cloudflare explique le silence. Un REJECT expliquerait un 521.
  4. Comparez la charge. Une file d’attente pleine au niveau TCP se voit par des connexions qui n’arrivent pas, pas par des pages PHP lentes dans le journal.
  5. Testez le nom public avec un test d’URL. Tant que Cloudflare affiche 522, les visiteurs ne joignent pas l’origine, même si votre SSH fonctionne.

Les fonctionnalités de surveillance qui interrogent l’URL publique voient le 522. Un contrôle lancé sur le serveur, en local, ne le voit pas.

Débloquer le chemin

ConstatAction
DROP des IP CloudflareAutoriser ces plages en entrée sur 80 et 443. Préférer une règle explicite à un oubli après un durcissement
Charge qui empêche d’accepter les connexionsLibérer des workers ou de la CPU. Le correctif est la capacité d’accepter, pas un index SQL
Chemin réseau coupé depuis Cloudflare seulementOuvrir un ticket hébergeur avec l’IP d’origine, l’heure et le fait qu’un autre réseau passe
IP d’origine injoignableVérifier que la machine est routée et que l’enregistrement Cloudflare pointe vers elle
Anti-DDoS trop agressifDemander le déblocage des plages Cloudflare, pas une purge de cache

Retestez le port depuis l’extérieur après chaque changement de pare-feu. Un test local dira toujours que « le site est up ».

Ce qu’un 522 n’est pas

Ce n’est pas une page à optimiser, ni un cache à purger. Ce n’est pas un 524 : allonger le temps laissé à PHP ne complète pas une poignée de main absente. Ce n’est pas un 521 : relancer le service web ne sert à rien s’il écoute déjà et que les paquets sont jetés avant. Ce n’est pas non plus le moment de changer le mode SSL.

Quand la connexion TCP revient, contrôlez que l’URL publique répond un code de l’origine, avec la méthode pour tester si un site répond vraiment. Jusque-là, le visiteur ne parle qu’à Cloudflare.

Questions fréquentes

Le 522 veut-il dire que PHP est trop lent ?

Non. Cloudflare n’a pas fini d’établir la connexion TCP. Aucune requête HTTP n’a été envoyée. Une page qui répond trop tard, une fois connectée, produit un 524.

Pourquoi un pare-feu en DROP donne un 522 et pas un 521 ?

Un DROP ignore les paquets : Cloudflare attend la poignée de main jusqu’au délai, puis affiche 522. Un REJECT renvoie un refus immédiat, que Cloudflare affiche en 521.

Le délai du 522 se règle-t-il dans le thème ?

Non. Le délai concerne la connexion TCP entre Cloudflare et l’origine, de l’ordre de quelques secondes. Le code du site n’est pas encore en cause.

Surveiller mes URL