J'utilise une distribution Amazon CloudFront pour diffuser du contenu. Toutefois, les utilisateurs reçoivent un message d'erreur 504 lorsqu'ils tentent d'accéder au contenu via un navigateur Web. Comment puis-je résoudre ces erreurs ?
Brève description
CloudFront renvoie deux types d'erreurs 504 :
- 504 : les erreurs « Gateway Timeout » (« Délai d'attente de la passerelle ») se produisent lorsque l'erreur est renvoyée par l'origine, puis transmise à l'utilisateur via CloudFront.
- 504 : les erreurs « The request could not be satisfied » (« La requête n'a pas pu être satisfaite ») se produisent lorsque l'origine n'a pas répondu à CloudFront dans le délai imparti et que la demande a donc expiré.
En fonction du message d'erreur que vous recevez, consultez la section relative à la résolution.
Résolution
504 : erreur « Gateway Timeout » (« Délai d'attente de la passerelle »)
Vérifiez que les ports appropriés sont ouverts sur votre groupe de sécurité.
Assurez-vous que le serveur d'origine autorise le trafic entrant en provenance de CloudFront, généralement sur le port 443 ou 80.
Si votre origine utilise Elastic Load Balancing, passez en revue les groupes de sécurité ELB. Assurez-vous que les groupes de sécurité autorisent le trafic entrant en provenance de CloudFront.
Vérifiez que le pare-feu du serveur d'origine autorise les connexions depuis CloudFront
En fonction de votre système d'exploitation, vérifiez que le pare-feu autorise le trafic pour les ports 443 et 80.
Si vous utilisez Redhat Linux View, vérifiez que les règles de votre pare-feu correspondent aux paramètres suivants.
Règles de pare-feu :
$ sudo firewall-cmd --permanent --zone=public --list-ports
Ajouter des règles de façon permanente :
$ sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
$ sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
Si vous utilisez Ubuntu Linux, vérifiez que les règles de votre pare-feu correspondent aux paramètres suivants.
Règles de pare-feu Ubuntu Linux View :
$ sudo ufw status verbose
Ajouter des règles de façon permanente :
$ sudo ufw allow 80
$ sudo ufw allow 443
Si vous utilisez le pare-feu Windows sur un serveur Windows, consultez la section Ajouter ou modifier une règle de pare-feu dans la documentation Microsoft.
Assurez-vous que votre serveur personnalisé est accessible via Internet
Si CloudFront n'est pas en mesure d'accéder à votre origine via Internet, CloudFront renvoie une erreur 504. Pour vérifier que le trafic Internet peut se connecter à votre origine, vérifiez que vos règles HTTP et HTTPS correspondent aux paramètres suivants.
Pour le trafic HTTPS :
nc -zv OriginDomainName/IP_Address 443
telnet OriginDomainName/IP_Address 443
Pour le trafic HTTP :
nc -zv OriginDomainName 80
telnet OriginDomainName 80
504 : « The request could not be satisfied » (« La requête n'a pas pu être satisfaite »)
Mesurez la latence typique et à haute charge de votre application Web
Utilisez la commande suivante pour mesurer la réactivité de votre application Web :
curl -w "DNS Lookup Time: %{time_namelookup} \nConnect time: %{time_connect} \nTLS Setup: %{time_appconnect} \nRedirect Time: %{time_redirect} \nTime to first byte: %{time_starttransfer} \nTotal time: %{time_total} \n" -o /dev/null https://www.example.com/yourobject
Remarque : pour , entrez l'URL de l'application Web que vous testez.
Le résultat est similaire à ce qui suit :
DNS Lookup Time: 0.212319
Connect time: 0.371254
TLS Setup: 0.544175
Redirect Time: 0.000000
Time to first byte: 0.703863
Total time: 0.703994
En fonction de l'emplacement de la demande, résolvez les problèmes de l'étape qui affiche une latence élevée.
Ajoutez des ressources ou réglez des serveurs et des bases
Assurez-vous que votre serveur dispose de suffisamment de processeur, de mémoire et d'espace disque pour traiter les requêtes des utilisateurs.
Configurez des connexions persistantes sur votre serveur principal. Ces connexions contribuent à la latence lorsque les connexions doivent être rétablies pour les demandes suivantes.
Ajuster la valeur du délai d'attente CloudFront
Si les étapes de dépannage précédentes n'ont pas résolu les erreurs HTTP 504, mettez à jour le temps spécifié dans votre distribution pour le délai d'attente de réponse de l'origine.
Informations connexes
Code d'état HTTP 504 (délai d'attente de la passerelle)