Description
Lorsque vous utilisez Alibaba Cloud CDN pour accélérer l'accès à votre site web, les requêtes des clients sont d'abord envoyées à un point de présence (POP) de niveau 1, puis à un POP de niveau 2, et enfin à votre serveur d'origine. Un problème survenant à n'importe quelle étape de ce chemin réseau multiniveau peut entraîner des échecs d'accès. Si Alibaba Cloud CDN ne parvient pas à récupérer le contenu depuis votre serveur d'origine lors d'une requête de retour à l'origine, vous pouvez rencontrer des erreurs 5xx, telles que 502 Bad Gateway, 503 Service Temporarily Unavailable ou 504 Gateway Time-out.
Causes
Lorsqu'une erreur 5xx se produit pour une requête traitée par Alibaba Cloud CDN, le champ X-Swift-Error de l'en-tête de réponse contient souvent un message d'erreur spécifique, tel que forward retry timeout ou orig response 5xx error. Par ailleurs, utilisez cURL ou les outils de développement de votre navigateur (onglet Network) pour inspecter la durée de la requête.
-
Si des erreurs 5xx surviennent pour toutes les requêtes, la cause est généralement une mauvaise configuration dans Alibaba Cloud CDN ou un problème lié au serveur d'origine. Les raisons courantes d'échec du retour à l'origine incluent :
Le serveur d'origine est inaccessible ou son nom de domaine ne peut pas être résolu.
Le routage vers l'origine via HTTPS est configuré dans Alibaba Cloud CDN, mais le serveur d'origine ne prend pas en charge HTTPS.
La fonctionnalité Server Name Indication (SNI) est activée sur le serveur d'origine, mais elle n'est pas activée dans Alibaba Cloud CDN.
-
Si cette erreur se produit occasionnellement ou uniquement dans certaines régions, elle est probablement due à l'état du réseau sur le serveur d'origine ou à d'autres facteurs, tels que les suivants :
Les politiques de sécurité configurées sur le serveur d'origine bloquent les adresses IP des POPs.
La connexion réseau vers le serveur d'origine est instable, la route de retour à l'origine est instable ou la vitesse de réponse de l'interface dynamique fluctue.
Solutions
Alibaba Cloud CDN est un réseau mondial de POPs répartis à travers le globe. Alibaba Cloud CDN met en cache les ressources des serveurs d'origine sur les POPs afin d'accélérer l'accès. Lorsqu'une requête vise à accéder à une ressource pour la première fois ou à accéder à une ressource expirée mise en cache sur les POPs, la requête est redirigée vers le serveur d'origine. Le temps de réponse du serveur d'origine et le temps jusqu'au premier octet (TTFB) sont cruciaux pour le processus de routage vers l'origine. Si une erreur 5xx est signalée lors du routage vers l'origine, utilisez les méthodes suivantes pour diagnostiquer l'erreur :
Scénario 1 : Le serveur d'origine est un hôte local ou une instance ECS
Si votre serveur d'origine est un hôte local ou une instance Elastic Compute Service (ECS), procédez comme suit :
Étape 1 : Obtenez les en-têtes de réponse HTTP
Utilisez cURL ou Wget pour obtenir les en-têtes de réponse HTTP. L'exemple suivant montre comment utiliser la commande curl pour obtenir les en-têtes de réponse HTTP.
Vous pouvez également appuyer sur F12 pour ouvrir l'outil de développement du navigateur et accéder à l'onglet Network afin d'identifier l'URL pour laquelle l'erreur 5xx est renvoyée.
curl -vo [$File_Name] [$IP]
[$File_Name] : le nom du fichier créé dans le répertoire courant. La sortie du site web ayant envoyé la requête est enregistrée dans ce fichier.
[$IP] : l'adresse IP du site web ayant envoyé la requête.
Si le champ de réponse X-Swift-Error a pour valeur « orig response 5xx error » ou une valeur similaire, le routage vers l'origine a expiré ou le traitement de la requête sur le serveur d'origine a atteint le délai d'attente.
Vérifiez les aspects suivants en fonction de la réponse HTTP récupérée.
Étape 2 : Testez et analysez les performances réseau en fonction des régions affectées
Utilisez Networkbench ou 17CE pour vérifier les performances réseau des POPs. Utilisez différentes méthodes de dépannage selon les régions où l'erreur se produit :
Région unique : la cause de l'erreur peut être liée à la connexion entre le POP et le serveur d'origine. Effectuez plusieurs tests réseau pour vérifier si la connexion réseau est rétablie. Si cette erreur entraîne des conséquences significatives, enregistrez les en-têtes de réponse et contactez le support technique d'Alibaba Cloud.
-
Plusieurs régions : exécutez la commande suivante pour tester la qualité des connexions entre le client et le serveur d'origine, ainsi qu'entre le client et les POPs.
time telnet [$Test_IP] [$Test_Port] ping [$Test_IP]RemarqueLa première commande interroge le temps consommé pour exécuter la commande
telnet.La deuxième commande teste la connectivité réseau.
[$Test_IP] : l'adresse IP. Il peut s'agir de l'adresse IP du serveur d'origine ou de l'adresse IP d'un POP.
[$Test_Port] : le numéro de port. Il peut s'agir du numéro de port du serveur d'origine ou du numéro de port d'un POP.
Étape 3 : Vérifiez la bande passante et les QPS du nom de domaine
Suivez les étapes ci-dessous pour vérifier la bande passante et les QPS du nom de domaine.
Connectez-vous à la console Alibaba Cloud CDN.
Dans le volet de navigation de gauche, choisissez Content Delivery > Analytics > Real-time Monitoring pour consulter la bande passante récente de retour à l'origine et les QPS. Une augmentation soudaine de la bande passante ou des QPS peut provoquer des délais d'expiration de réponse du serveur d'origine.
En cas de pic de bande passante de retour à l'origine, vérifiez si de nouvelles ressources ont été ajoutées au serveur d'origine ou si des règles de cache sont configurées pour les ressources fréquemment consultées. Si votre activité implique un grand volume de données de jeu ou d'images, nous vous recommandons de déployer les ressources sur Alibaba Cloud CDN à l'avance en utilisant la fonctionnalité de préchargement afin d'éviter les goulots d'étranglement de performance sur le serveur d'origine causés par des pics de bande passante de retour à l'origine. Nous vous conseillons également de configurer une durée de vie (TTL) de cache longue pour les ressources fréquemment consultées.
-
Vérifiez si des règles de cache sont configurées sur Alibaba Cloud CDN et sur le serveur d'origine. Si l'en-tête de réponse no-cache est configuré pour le serveur d'origine, il prévaut sur la configuration du cache sur Alibaba Cloud CDN. Si aucune règle de cache n'est configurée pour le serveur d'origine et les POPs d'Alibaba Cloud CDN, la TTL par défaut est de 10 à 3 600 secondes. Pour plus d'informations, consultez Aperçu du cache
Si vous êtes un nouvel utilisateur d'Alibaba Cloud CDN ou si vous n'êtes pas familier avec la mise en cache d'Alibaba Cloud CDN, nous vous recommandons de configurer une TTL maximale pour les répertoires et de définir une politique distincte pour les ressources qui ne nécessitent pas de mise en cache. Vous pouvez ensuite spécifier des priorités pour contrôler la correspondance. Pour plus d'informations, consultez Configurer l'expiration du cache CDN.
Étape 4 : Vérifiez la connectivité et la résolution de nom de domaine du serveur d'origine
Les POPs d'Alibaba Cloud CDN sont situés sur Internet. Le serveur d'origine doit être connecté à Internet pour que le routage vers l'origine réussisse. Si l'adresse IP configurée pour le serveur d'origine est inaccessible via Internet, si le port sur le serveur d'origine est inaccessible ou si le nom de domaine du serveur d'origine n'est pas résolu, une erreur 5XX est signalée sur le serveur d'origine.
-
Le serveur d'origine est inaccessible. Exécutez la commande ping pour tester la connectivité du serveur d'origine.
ping [$IP]Remarque[$IP] est l'adresse IP du serveur d'origine.
-
Le port configuré sur le serveur d'origine est inaccessible, ou le serveur d'origine renvoie directement une erreur 5xx. Un test de port utilisant telnet renvoie l'erreur
Connection timed out.-
Si le port 80 est configuré sur le serveur d'origine, exécutez la commande suivante pour tester l'état du port.
telnet [$IP] 80 Si le port 443 ou un port personnalisé est configuré sur le serveur d'origine, testez si le port 443 ou le port personnalisé est accessible.
-
Obtenez les configurations d'adresse IP et de port du serveur d'origine dans la console Alibaba Cloud CDN et utilisez le fichier hosts local pour mapper l'adresse IP au serveur d'origine. Effectuez un test de couche 7 pour vérifier si le serveur d'origine ne répond pas ou renvoie directement une erreur 5xx. Alternativement, exécutez
curlpour tester l'état du port sur le serveur d'origine.-
Si le port sur le serveur d'origine est le port 80, exécutez
curl -voa http://[$Domain] -x [$IP]:80.Remarque[$Domain] est le nom de domaine accéléré.
Si le port sur le serveur d'origine est le port 443, exécutez
curl -voa https://[$Domain] --resolve [$Domain]:443:[$IP].
-
-
Si le nom de domaine du serveur d'origine est configuré dans Alibaba Cloud CDN, mais que la résolution de nom de domaine n'est pas configurée, le routage vers l'origine échoue. Utilisez
pingounslookuppour tester si le nom de domaine du serveur d'origine est correctement résolu. Par exemple, si un ping du nom de domaine example.aliyundoc.com du serveur d'origine renvoie l'erreurunknown hostou si l'exécution de la commande nslookup pour interroger l'enregistrement de résolution de nom de domaine du serveur d'origine renvoieserver can't find example.aliyundoc.com: NXDOMAIN, le nom de domaine du serveur d'origine n'est pas résolu. Pour plus d'informations sur la configuration de la résolution de nom de domaine, consultez Configurer un enregistrement CNAME.
Étape 5 : Vérifiez les configurations de retour à l'origine
Si le routage vers l'origine via HTTPS est configuré dans Alibaba Cloud CDN, mais que le serveur d'origine ne prend pas en charge HTTPS, une erreur 5xx est renvoyée lors du routage vers l'origine. Utilisez les méthodes suivantes pour diagnostiquer l'erreur en fonction de votre scénario métier.
-
Le port 443 est configuré sur le serveur d'origine, mais le serveur d'origine ne prend pas en charge HTTPS. Si le port du serveur d'origine est défini sur 443 dans la page de retour à l'origine de la console Alibaba Cloud CDN, le routage vers l'origine utilise HTTPS sur le port 443. Le port 443 doit être ouvert sur le serveur d'origine et celui-ci doit disposer d'un certificat HTTPS.
Si le serveur d'origine ne prend pas en charge HTTPS, il renvoie une erreur 5xx, indiquant que le routage vers l'origine a échoué. Dans ce cas, modifiez le port de retour à l'origine pour le porter à 80.
Si votre activité nécessite un routage vers l'origine via le port 443, configurez un certificat HTTPS pour le serveur d'origine.
Le routage vers l'origine est configuré pour suivre le protocole utilisé par le client, mais le serveur d'origine ne prend pas en charge HTTPS. Si le routage vers l'origine est configuré pour utiliser HTTPS, Alibaba Cloud CDN utilise HTTPS pour le routage vers l'origine. Si le protocole de routage vers l'origine est défini sur Follow et que le client utilise HTTPS pour demander des ressources, Alibaba Cloud CDN utilise HTTPS pour le routage vers l'origine. Si le serveur d'origine ne prend pas en charge HTTPS, un échec d'accès se produit. Dans ce cas, désactivez le routage vers l'origine suivant le protocole ou utilisez HTTP comme protocole pour le routage vers l'origine.
-
Utilisez la commande
curlpour tester l'accessibilité du serveur d'origine.curl -voa https://[$Domain] --resolve [$Domain]:443:[$IP] Vous pouvez également modifier le fichier hosts local pour le mapper au serveur d'origine et utiliser un navigateur pour initier des requêtes HTTPS afin de tester l'accessibilité du serveur d'origine. Si l'erreur
Your connection is not privateest renvoyée, cela signifie que le serveur d'origine ne prend pas en charge l'accès via HTTPS.
Scénario 2 : Votre application métier utilise la combinaison d'Alibaba Cloud CDN et d'OSS
Si votre application métier combine Alibaba Cloud CDN et Object Storage Service (OSS), suivez les étapes ci-dessous pour diagnostiquer l'erreur :
-
Utilisez l'option
--probe-itemde l'outil ossutil pour vérifier si la bande passante sortante dépasse 10 Gbit/s et si les QPS dépassent 10 000. Si ces limites sont dépassées, la limitation de trafic OSS est déclenchée et le traitement des requêtes de retour à l'origine au-delà des limites est retardé. Pour plus d'informations sur la limitation de trafic, consultez Limites et métriques de performance.RemarquePour plus d'informations sur l'utilisation de l'option
--probe-itemdans ossutil, consultez Afficher les options.Les requêtes de retour à l'origine envoyées en cas de limitation de trafic OSS ne renvoient pas d'erreur d'indisponibilité. Elles sont traitées avec un retard.
-
Vérifiez si le trafic sortant sur Alibaba Cloud CDN dépasse la limite de bande passante du serveur d'origine. Si le serveur d'origine atteint la bande passante maximale, des problèmes au niveau du réseau et de la couche application surviennent.
RemarqueUtilisez l'outil iperf pour vérifier le trafic entre deux POPs.
Utilisez l'outil Netstat pour vérifier le nombre de connexions réseau.
Vérifiez si le serveur d'origine comporte des restrictions de pare-feu. Plus précisément, vérifiez si le serveur d'origine limite la vitesse ou les adresses IP pour les requêtes de retour à l'origine.
-
Si les étapes de dépannage précédentes n'indiquent aucune anomalie, vérifiez les journaux d'erreurs Web du serveur d'origine pour les messages d'erreur 5xx. Si aucune erreur n'est enregistrée dans les fichiers journaux au niveau de la couche application, testez la connexion du serveur d'origine aux POPs pour vérifier les erreurs 5xx causées par des fluctuations réseau. Ce processus de vérification dépend de la fréquence réelle des erreurs et de l'état de l'activité.
RemarqueEn général, si le serveur d'origine atteint facilement la bande passante maximale ou si des pertes de paquets ou une latence des paquets se produisent régulièrement, nous vous recommandons d'augmenter la valeur du paramètre
send timeoutouread timeoutdans le fichier nginx.conf.