Maison Opération et maintenance Nginx Comment configurer la vérification de l'état http de Nginx

Comment configurer la vérification de l'état http de Nginx

May 14, 2023 pm 06:10 PM
http nginx

Vérifications passives

Pour les vérifications de santé passives, nginx et nginx plus surveillent les événements au fur et à mesure qu'ils se produisent et tentent de récupérer les connexions échouées. Si cela ne fonctionne toujours pas, nginx open source et nginx plus marqueront le serveur comme indisponible et cesseront temporairement de lui envoyer des requêtes jusqu'à ce qu'il soit à nouveau marqué actif.

Les conditions dans lesquelles un serveur en amont est marqué comme indisponible sont définies pour chaque serveur en amont avec le paramètre en amont de la directive serveur dans le bloc :

  • fail_timeout - Définit le temps après lequel plusieurs tentatives infructueuses doivent être effectuées lorsqu'un le serveur est marqué comme indisponible et l'heure à laquelle le serveur est marqué comme indisponible (la valeur par défaut est de 10 secondes).

  • max_fails - Définit le nombre de tentatives infructueuses qui doivent se produire pendant fail_timeout pour que le serveur soit marqué comme indisponible (la valeur par défaut est 1 tentative). Dans l'exemple suivant, si nginx ne parvient pas à envoyer une requête au serveur ou ne reçoit pas de réponse 3 fois dans les 30 secondes, cela signifie que le serveur est indisponible dans les 30 secondes :

upstream backend {
  server backend1.example.com;
  server backend2.example.com max_fails=3 fail_timeout=30s;
}
Copier après la connexion

Il est à noter que s'il y a n'est qu'un seul groupe de serveurs, les paramètres fail_timeout et max_fails sont ignorés et le serveur n'est jamais marqué comme indisponible.

Démarrage lent du serveur

Les serveurs récemment restaurés peuvent facilement être inondés de connexions, ce qui peut entraîner à nouveau le serveur comme indisponible. Le démarrage lent permet à un serveur en amont de restaurer progressivement son poids de zéro à sa valeur nominale après sa récupération ou sa disponibilité. Cela peut être fait en spécifiant le paramètre slow_start du module serveur en amont :

upstream backend {
  server backend1.example.com slow_start=30s;
  server backend2.example.com;
  server 192.0.0.1 backup;
}
Copier après la connexion

Remarque : S'il n'y a qu'un seul serveur dans le groupe, le paramètre slow_start sera ignoré et le serveur ne sera jamais marqué comme indisponible. Le démarrage lent est une fonctionnalité exclusive de nginx plus

Vérifications proactives de nginx plus

nginx plus peut vérifier régulièrement l'état des serveurs en amont en envoyant des demandes de contrôle de santé spéciales à chaque serveur et en vérifiant la réponse correcte.

Pour activer les contrôles de santé actifs :

1. Dans le bloc d'emplacement transmettant les requêtes (proxy_pass) au groupe en amont, incluez la directive health_check :

server {
 location / {
   proxy_pass http://backend;
   health_check;
 }
}
Copier après la connexion

Cet extrait définit un serveur qui gérera toutes les requêtes. Correspond à l'emplacement/en amont. groupe transmis au backend d’appel. Il permet également une surveillance avancée de l'état à l'aide de la directive health_check : par défaut, nginx plus envoie une requête "/" à chaque serveur du backend du groupe toutes les cinq secondes.

Si une erreur de communication ou un délai d'attente se produit (le code d'état renvoyé par le serveur est en dehors de la plage 200-399), la vérification de l'état échoue. Le serveur est marqué comme défectueux et nginx plus ne lui enverra pas de requêtes client tant qu'il n'aura pas réussi à nouveau la vérification de l'état.

Une autre option facultative : vous pouvez spécifier un autre port pour les contrôles de santé, par exemple, pour surveiller la santé de nombreux services sur le même hôte. Spécifiez le nouveau port à l'aide du paramètre port de la directive health_check :

server {
 location / {
   proxy_pass  http://backend;
   health_check port=8080;
 }
}
Copier après la connexion

2. Dans le groupe de serveurs en amont, utilisez la directive zone pour définir une zone de mémoire partagée :

http {
 upstream backend {
   zone backend 64k;
   server backend1.example.com;
   server backend2.example.com;
   server backend3.example.com;
   server backend4.example.com;
 }
}
Copier après la connexion

Cette zone est partagée entre tous les processus de travail et stocke le configuration du groupe amont. Cela permet aux processus de travail d'utiliser le même ensemble de compteurs pour suivre les réponses des serveurs du groupe.

La valeur par défaut des contrôles de santé actifs peut être remplacée à l'aide de l'argument de la directive health_check :

location / {
  proxy_pass http://backend;
  health_check interval=10 fails=3 passes=2;
}
Copier après la connexion

Ici, l'argument interval augmente le délai entre les contrôles de santé de 5 secondes par défaut à 10 secondes. Le paramètre fails nécessite que le serveur échoue à trois vérifications de l'état afin de le marquer comme non sain (en commençant par la valeur par défaut). Enfin, le paramètre pass signifie que le serveur doit passer deux vérifications consécutives avant de pouvoir à nouveau être marqué comme sain, au lieu de la valeur par défaut.

Spécifiez l'url demandée

Spécifiez le paramètre uri dans la directive health_check pour définir l'itinéraire de la demande de vérification de l'état :

location / {
  proxy_pass http://backend;
  health_check uri=/some/path;
}
Copier après la connexion

L'uri spécifié sera ajouté au nom de domaine du serveur ou à l'adresse IP définie pour le serveur dans le bloc amont. Pour le premier serveur du groupe d'échantillons backend déclaré ci-dessus, la vérification de l'état demande l'uri http://backend1.example.com/some/path.

Définir des conditions personnalisées

Vous pouvez définir des conditions personnalisées qu'une réponse doit remplir pour que le serveur réussisse le contrôle de santé. Les conditions sont définies dans un bloc de correspondance, qui est référencé dans l'argument de la directive health_check.

1. Au niveau http {}, précisez le bloc match {} et donnez-lui un nom, par exemple : 'server_ok'

http {
 #... 
 match server_ok {
   # tests are here     
 }
}
Copier après la connexion

2.health_check en précisant le paramètre match du bloc et le nom de la correspondance bloc de paramètres :

http {
 #... 
 match server_ok {
   status 200-399;
   body !~ "maintenance mode";
 }
 server {
   #...     
   location / {
     proxy_pass http://backend;
     health_check match=server_ok;
   }
 }
}
Copier après la connexion

if Le contrôle de santé est réussi si le code d'état de la réponse est compris entre 200 et 399 et que son corps ne contient pas la chaîne : 'mode maintenance'

La directive match permet à nginx plus de vérifier le code d'état , les champs d'en-tête et le corps de la réponse. Utilisez cette directive pour vérifier que l'état se situe dans la plage spécifiée, que la réponse contient des en-têtes ou que les en-têtes ou le corps correspondent à une expression régulière. La directive match peut contenir une condition de statut, une condition de corps et plusieurs conditions de titre. La réponse doit remplir toutes les conditions définies dans le bloc de correspondance pour que le serveur réussisse le contrôle de santé.

例如,下面的 match 指令匹配有状态代码响应 200,精确值 text/html 的content-type 标题,页面中的文字:'welcome to nginx!'.

match welcome {
  status 200;
  header content-type = text/html;
  body ~ "welcome to nginx!";
}
Copier après la connexion

以下示例使用感叹号(!)来定义响应不得通过运行状况检查的特征。在这种情况下,健康检查在非 301,302,303,或 307状态码,同时并没有 refresh 头信息时将通过检查,。

match not_redirect {
  status ! 301-303 307;
  header ! refresh;
}
Copier après la connexion

健康检查可以在其他非 http 协议中启用, 例如 fastcgi, , scgi,  甚至 tcp 和 udp。

很多很好的特性,就是需要 nginx plus 才能使用。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment vérifier si Nginx est démarré Comment vérifier si Nginx est démarré Apr 14, 2025 pm 01:03 PM

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment résoudre nginx403 Comment résoudre nginx403 Apr 14, 2025 am 10:33 AM

Comment corriger l'erreur interdite Nginx 403? Vérifier les autorisations de fichier ou de répertoire; 2. Vérifier le fichier .htaccess; 3. Vérifiez le fichier de configuration NGINX; 4. Redémarrer Nginx. D'autres causes possibles incluent les règles de pare-feu, les paramètres de Selinux ou les problèmes d'application.

Comment démarrer Nginx dans Linux Comment démarrer Nginx dans Linux Apr 14, 2025 pm 12:51 PM

Étapes pour démarrer Nginx dans Linux: Vérifiez si Nginx est installé. Utilisez SystemCTL Start Nginx pour démarrer le service NGINX. Utilisez SystemCTL Activer Nginx pour activer le démarrage automatique de Nginx au démarrage du système. Utilisez SystemCTL Status Nginx pour vérifier que le démarrage est réussi. Visitez http: // localhost dans un navigateur Web pour afficher la page de bienvenue par défaut.

Comment résoudre l'erreur Nginx403 Comment résoudre l'erreur Nginx403 Apr 14, 2025 pm 12:54 PM

Le serveur n'a pas l'autorisation d'accéder à la ressource demandée, ce qui donne une erreur NGINX 403. Les solutions incluent: vérifier les autorisations de fichiers. Vérifiez la configuration .htaccess. Vérifiez la configuration de Nginx. Configurez les autorisations Selinux. Vérifiez les règles du pare-feu. Dépanner d'autres causes telles que les problèmes de navigateur, les défaillances du serveur ou d'autres erreurs possibles.

Comment configurer Nginx dans Windows Comment configurer Nginx dans Windows Apr 14, 2025 pm 12:57 PM

Comment configurer Nginx dans Windows? Installez Nginx et créez une configuration d'hôte virtuelle. Modifiez le fichier de configuration principale et incluez la configuration de l'hôte virtuel. Démarrer ou recharger nginx. Testez la configuration et affichez le site Web. Activer sélectivement SSL et configurer les certificats SSL. Définissez sélectivement le pare-feu pour permettre le trafic Port 80 et 443.

Comment vérifier si Nginx est démarré? Comment vérifier si Nginx est démarré? Apr 14, 2025 pm 12:48 PM

Dans Linux, utilisez la commande suivante pour vérifier si Nginx est démarré: SystemCTL Status Nginx Juges Basé sur la sortie de la commande: si "Active: Active (Running)" s'affiche, Nginx est démarré. Si "Active: Inactive (Dead)" est affiché, Nginx est arrêté.

Comment résoudre le problème du domaine croisé nginx Comment résoudre le problème du domaine croisé nginx Apr 14, 2025 am 10:15 AM

Il existe deux façons de résoudre le problème du domaine transversal NGINX: modifiez les en-têtes de réponse transversale: ajoutez des directives pour autoriser les demandes de domaine croisé, spécifier des méthodes et des en-têtes autorisés et définir le temps du cache. Utilisez le module CORS: Activez les modules et configurez les règles CORS pour permettre des demandes, des méthodes, des en-têtes et du temps de cache.

Comment résoudre l'erreur Nginx304 Comment résoudre l'erreur Nginx304 Apr 14, 2025 pm 12:45 PM

Réponse à la question: 304 Erreur non modifiée indique que le navigateur a mis en cache la dernière version de ressource de la demande du client. Solution: 1. Effacer le cache du navigateur; 2. Désactiver le cache du navigateur; 3. Configurer Nginx pour permettre le cache client; 4. Vérifier les autorisations du fichier; 5. Vérifier le hachage du fichier; 6. Désactiver le CDN ou le cache proxy inversé; 7. Redémarrez Nginx.

See all articles