Une erreur de passerelle 502 s'affiche lors du basculement entre les pages du site et parfois sur la page d'accueil, mais pas pour la première demande sur la page d'accueil, c'est uniquement lorsqu'une autre page y redirige. et cela arrive pour certains fichiers javascript
équilibrage de charge configuré sur deux amonts php1 php2 sont tous deux un serveur apache.
Lorsque j'ai vérifié le journal des erreurs, j'aimais:
no live upstreams while connecting to upstream
[error] 27212#0: *314 no live upstreams while connecting to upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"
et c'est la configuration du serveur d'équilibrage de charge
upstream example.com {
# ip_hash;
server php01 max_fails=3 fail_timeout=15s;
server php02 max_fails=3 fail_timeout=15s;
}
server {
listen IP:80;
server_name example.com;
access_log /var/log/nginx/example.com.access;
error_log /var/log/nginx/example.com.error error;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://$server_name/$uri;
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pragma $http_authorization;
}
}
J'ai cherché pendant des heures et rien d'utile n'a trouvé que mes flux étaient en hausse et aucun problème avec eux.
Réponses:
Ce n'est pas un problème avec Nginx, c'est un problème avec vos backends PHP qui ne répondent pas à temps. Vous pouvez ajouter la journalisation à Nginx pour aider à confirmer cela .
Comme deuxième point de référence, vous pouvez vous pouvez
top
sur le serveur et vérifier manuellement si PHP claque le CPU pendant des périodes de temps, un autre indicateur de réponses lentes.Si des réponses très lentes de PHP vous conviennent, vous pouvez demander à Nginx d'attendre plus longtemps avant d'abandonner:
En examinant les journaux avec les informations de synchronisation liées à ce qui précède, vous devriez être en mesure de déterminer quelles demandes sont lentes à traiter par PHP.
Pour limiter le problème, envoyez ces requêtes directement au backend PHP.
Selon ce qui se passe, vous pouvez également activer la mise en cache de certaines demandes dans Nginx, en évitant certaines des demandes lentes.
la source
Je ne sais pas si c'est tout à fait la même chose mais ce qui a fonctionné pour moi a été d'ajouter max_fails = 0 à la fin du nom du serveur
sm_url {serveur LOAD_BALANCER_DOMAIN_NAME en amont: max_fails = 0; }
la source
Renommez l'amont en "up_example.com" et changez
être
la source
$server_name
. Si tel était le problème, je pense qu'il aurait des problèmes / tout le temps, pas seulement parfois comme indiqué.