PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Solution aux erreurs 502 Bad Gateway et 504 Gateway Timeout sur le serveur Linux

Yazdır

Solution aux erreurs 502 Bad Gateway et 504 Gateway Timeout sur le serveur Linux

Un guide étape par étape pour résoudre les problèmes de Nginx, Apache, PHP-FPM et de délai d'attente des services.

vu sur les sites internet 502 Mauvaise passerelle et 504 Délai d'expiration de la passerelle des erreurs se produisent généralement parce que le serveur Web ne reçoit pas la réponse correcte du service back-end. Ce service peut être PHP-FPM, un backend Apache, une application Node.js, un service API de panneau de jeu ou une autre application derrière le proxy.

Ces erreurs sont particulièrement courantes dans l'hébergement, le panneau de jeu, WHMCS, Pterodactyl, le panneau d'administration personnalisé et les systèmes de lancement Web.

Explication simple : Nginx est comme le préposé à la porte. Si le PHP ou l'application qu'il contient ne répond pas, il affichera une erreur 502 ou 504 à l'utilisateur.

1. Différence entre les erreurs 502 et 504

  • 502 Passerelle incorrecte : Le serveur Web ne peut pas se connecter au service backend ou reçoit une réponse tronquée.
  • 504 Délai d'expiration de la passerelle : Le service backend semble répondre, mais la réponse n'est pas renvoyée à temps.

Ainsi, 502 est davantage un crash de connexion/service, et 504 est un problème de lenteur ou de délai d'attente.

2. Vérification des statuts des services

Tout d’abord, vérifiez si le serveur Web et les services PHP sont en cours d’exécution.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

Sur les systèmes CentOS, AlmaLinux ou Rocky Linux, le service PHP-FPM peut être nommé :

systemctl status php-fpm
systemctl status httpd

Si le service s'est arrêté, redémarrez-le :

systemctl restart nginx
systemctl restart php-fpm

3. Examen des fichiers journaux

Il n'est pas correct de procéder à des suppositions pour les erreurs 502 et 504. Le fichier journal montre la véritable cause de l'erreur.

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

Sur les systèmes basés sur CentOS :

tail -n 100 /var/log/httpd/error_log

Les déclarations suivantes peuvent être vues dans les journaux :

  • connect() a échoué : Impossible de se connecter au service backend.
  • le délai amont a expiré : Le service backend répond en retard.
  • connexion refusée : Le service est en panne ou le transfert est effectué vers le mauvais port.
  • autorisation refusée : Il y a un problème d’autorisation de socket ou de fichier.

4. Prise PHP-FPM ou contrôle de port

Nginx se connecte à PHP-FPM via un socket ou un port. Le chemin PHP-FPM dans le fichier de configuration Nginx et la valeur d'écoute réelle de PHP-FPM doivent être identiques.

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

Par exemple si Nginx utilise :

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

La même socket doit être écoutée côté PHP-FPM :

listen = /run/php/php8.2-fpm.sock
Important : Si la version de PHP a changé, Nginx consulte peut-être toujours l'ancien chemin du socket PHP-FPM. C’est l’une des causes les plus courantes d’erreurs 502.

5. Augmentation des paramètres de délai d'attente

Des erreurs 504 peuvent être reçues dans de grands panneaux de traitement, des marchés de jeu, des API ou des scripts PHP à exécution lente. Les valeurs de délai d'attente de Nginx peuvent être augmentées.

nano /etc/nginx/nginx.conf

Les valeurs suivantes peuvent être ajoutées au bloc http ou au bloc serveur correspondant :

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

Testez les paramètres et redémarrez Nginx :

nginx -t
systemctl restart nginx

6. Vérification des limites du processus PHP-FPM

Lorsque le trafic augmente, les limites de transactions PHP-FPM peuvent s'avérer insuffisantes. Dans ce cas, les demandes sont mises en file d'attente et un délai d'attente se produit.

nano /etc/php/8.2/fpm/pool.d/www.conf

Exemples de paramètres :

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

Ces valeurs doivent être ajustées en fonction de la quantité de RAM du serveur. Définir une valeur trop élevée augmente la consommation de RAM.

Erreurs courantes

  • Modifier les paramètres sans consulter le fichier journal
  • Ne pas mettre à jour le chemin du socket Nginx même si la version PHP a changé
  • Ne pas corriger la requête lente en augmentant le délai d'attente
  • Augmenter les limites PHP-FPM sans calculer la RAM
  • Redémarrer le service sans tester la configuration Nginx

FAQ

L’erreur 502 est-elle toujours causée par Nginx ?
Non, Nginx est juste celui qui affiche l'erreur. Le vrai problème peut provenir de PHP-FPM, du backend Apache, de l'application Node.js ou d'un autre service.

L'augmentation du délai d'attente est-elle la solution définitive aux erreurs 504 ?
Pas toujours. L'augmentation du délai d'attente offre un soulagement temporaire. La vraie solution consiste à trouver le problème de requête lente, de traitement lourd ou de performances.

Est-il sécuritaire de redémarrer PHP-FPM ?
C'est généralement sûr, mais les requêtes actives peuvent être affectées pendant une courte période. Dans les systèmes très fréquentés, les heures de faible trafic doivent être privilégiées.

Recommandations de performances

  • Vérifiez régulièrement la version de PHP-FPM et le chemin du socket.
  • Examinez les journaux de requêtes lentes dans le panneau Web et les services API.
  • Si la RAM est insuffisante, n'augmentez pas inconsciemment la valeur PHP-FPM max_children.
  • Réduisez la charge du backend en utilisant un système de cache.
  • Gérez les journaux d’erreurs avant qu’ils ne s’agrandissent avec logrotate.

Cet article est spécialement préparé pour PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner