Comment résoudre l'erreur Nginx "(110: Connection timed out) while reading response header from upstream" ?

Publié 27 août 2024

Problème : Erreur de délai d'attente de connexion Nginx

L'erreur "(110: Connection timed out) while reading response header from upstream" dans Nginx survient lorsque le serveur ne reçoit pas de réponse rapide d'un service en amont. Ce problème peut affecter les applications web, entraînant une livraison lente du contenu. Les utilisateurs peuvent constater des chargements de pages lents ou être incapables d'accéder à certaines parties d'un site web lorsque cette erreur se produit.

Solutions pour le problème de délai d'attente en amont de Nginx

Ajuster les paramètres de délai d'attente de Nginx

Pour résoudre le problème de délai d'attente en amont de Nginx, vous pouvez modifier les paramètres de délai d'attente. Modifiez la directive proxy_read_timeout dans votre configuration Nginx. Ce paramètre contrôle le temps que Nginx attend une réponse du serveur en amont. Augmenter cette valeur donne plus de temps au serveur en amont pour répondre avant que Nginx ne mette fin à la connexion.

Vous pouvez également définir les directives proxy_connect_timeout et proxy_send_timeout. Le proxy_connect_timeout définit le temps que Nginx attend pour se connecter au serveur en amont. Le proxy_send_timeout définit le temps que Nginx attend lors de l'envoi d'une requête au serveur en amont.

Optimiser les performances du serveur backend

Vous pouvez également améliorer les performances de vos serveurs backend. Commencez par corriger les temps de réponse lents des serveurs en amont. Cela peut inclure l'accélération des requêtes de base de données, la mise en cache des données ou l'ajout de ressources serveur supplémentaires pour gérer des charges plus importantes.

L'accélération du traitement des API et du PHP peut également réduire les erreurs de délai d'attente. Vous pouvez utiliser la mise en cache opcode pour PHP, améliorer votre code d'application et concevoir des API plus efficacement. Ces étapes peuvent conduire à des temps de réponse plus rapides et moins de problèmes de délai d'attente.

Dépannage avancé des erreurs du contrôleur Nginx

Enquêter sur les problèmes du contrôleur d'entrée Nginx

Lorsque vous rencontrez des erreurs de délai d'attente en amont de Nginx, vérifiez le contrôleur d'entrée Nginx. Examinez les changements récents de configuration. Regardez vos fichiers de configuration Nginx pour les modifications qui pourraient causer le problème de délai d'attente. Concentrez-vous sur les paramètres des serveurs en amont, l'équilibrage de charge et les configurations de proxy.

Vérifiez l'état du processus Nginx. Utilisez la ligne de commande pour voir si le service Nginx est en cours d'exécution. Recherchez des messages d'erreur dans les journaux d'erreur Nginx qui pourraient expliquer le problème de délai d'attente.

Résoudre les déclencheurs de rechargement Nginx

Des rechargements fréquents de Nginx peuvent entraîner des erreurs de délai d'attente. Trouvez les causes de ces rechargements en vérifiant vos journaux système pour des modèles ou des événements qui les déclenchent. Les causes courantes incluent les changements de configuration, les mises à jour de certificats ou les déploiements automatisés.

Pour répondre aux besoins de rechargement du backend, examinez votre méthode de déploiement d'application. Envisagez d'utiliser des mises à jour progressives ou des déploiements bleu-vert pour réduire les temps d'arrêt et le besoin de rechargements fréquents de Nginx. De plus, améliorez vos services backend pour traiter les requêtes plus rapidement, diminuant ainsi la probabilité de délais d'attente pendant les rechargements.

Approches alternatives pour résoudre l'erreur de délai d'attente

Mise en place des paramètres keepalive de Nginx

La configuration de keepalive_timeout dans Nginx peut aider à réduire les erreurs de délai d'attente. Ce paramètre détermine combien de temps Nginx garde les connexions inactives ouvertes. Définissez une valeur basée sur les besoins de votre serveur et les modèles de trafic. Un point de départ typique est de 65 secondes :

keepalive_timeout 65;

L'utilisation de proxy_http_version 1.1 et proxy_set_header connection aide à maintenir les connexions entre Nginx et les serveurs en amont. Ajoutez ces directives à votre configuration Nginx :

proxy_http_version 1.1;
proxy_set_header Connection "";

Ces paramètres permettent à Nginx de réutiliser les connexions, réduisant la création de nouvelles connexions et potentiellement diminuant les erreurs de délai d'attente.

Examen du chargement des certificats SSL

La vérification de la validité des certificats TLS est importante lors du dépannage des erreurs de délai d'attente. Vérifiez que vos certificats SSL sont à jour et correctement installés. Utilisez OpenSSL pour vérifier la date d'expiration et la validité du certificat :

openssl x509 -in certificate.crt -text -noout

Si vous rencontrez des problèmes de chargement de certificat, vérifiez les journaux d'erreur Nginx pour les erreurs liées à SSL. Les problèmes courants incluent des permissions de fichier incorrectes, des clés privées non correspondantes ou des chaînes de certificats incomplètes. Assurez-vous que les fichiers de certificat sont lisibles par le processus Nginx et que la chaîne de certificat complète est fournie si nécessaire.

Pour dépanner les problèmes de chargement de certificat :

  1. Vérifiez les permissions des fichiers liés à SSL.
  2. Vérifiez que le certificat et la clé privée correspondent.
  3. Confirmez que la chaîne de certificat complète est présente si nécessaire.
  4. Examinez les directives de configuration SSL de Nginx pour détecter d'éventuelles erreurs.