Maison > Opération et maintenance > Nginx > Contrôle du trafic Nginx

Contrôle du trafic Nginx

藏色散人
Libérer: 2019-10-18 14:44:16
avant
2331 Les gens l'ont consulté

Objectif

Comprenez les modules ngx_http_limit_conn_module et ngx_http_limit_req_module de Nginx pour contrôler le nombre d'accès aux requêtes.

Tutoriel recommandé : Tutoriel nginx

Modularité Nginx

La structure interne de nginx est composée de modules de base et d'une série de Composé de modules fonctionnels. L'architecture modulaire rend les fonctions de chaque module relativement simples, atteint une cohésion élevée et facilite également l'expansion fonctionnelle de Nginx.

Pour les requêtes Web, tous les modules activés de Nginx formeront une chaîne, similaire aux niveaux d'un jeu révolutionnaire. Chaque module est responsable d'une fonction spécifique, comme le module ngx_http_gzip_module qui implémente la compression, et le module ngx_http_auth_basic_module qui implémente la vérification et le module ngx_http_proxy_module qui implémente le proxy, etc. Les demandes de connexion au serveur seront traitées tour à tour par chaque module de Nginx. Seules les demandes traitées par ces modules seront effectivement transmises au code du programme en arrière-plan pour traitement.

Contrôle d'accès simultané Nginx

Pour les serveurs Web, lorsque vous rencontrez des robots d'exploration Web ou des attaques malveillantes à grand trafic, la mémoire et le processeur du serveur seront également pleins. complet, donc en tant que logiciel d'agent serveur mature, il doit être capable de contrôler ces situations.

Nginx dispose de deux manières de contrôler la simultanéité. L'une consiste à contrôler sa simultanéité via IP ou d'autres paramètres ; l'autre consiste à contrôler le volume total de traitement des requêtes par unité de temps. C'est-à-dire le contrôle de la concurrence et du parallélisme. Ces deux fonctions sont implémentées respectivement par les modules ngx_http_limit_conn_module et ngx_http_limit_req_module.

module ngx_http_limit_conn_module

Description

Ce module est principalement utilisé pour contrôler la quantité de simultanéité des requêtes.

Configuration des paramètres

Quantity limit_conn_zone

Configuration des instructions limit_conn_zone key zone=name:size

Contexte de configuration : http

Description : clé est une variable dans Nginx, généralement $binary_remote_addr | $server_name ; est le nom de la mémoire partagée, la taille est la taille de la mémoire partagée, cette configuration s'appliquera pour un nom d'espace mémoire partagé et enregistrera l'état d'accès de la clé ;

Quantity limit_conn_log_level

Syntaxe : limit_conn_log_level info|notice|warn|error

Valeur par défaut : erreur

Contexte de configuration : http, serveur, emplacement

Description : Lorsque l'accès atteint la limite maximale, l'état de l'accès sera enregistré dans le journal

● limit_conn

Syntaxe : limit_conn zone_name number

Contexte de configuration : http, serveur, emplacement

Description : Utilisez zone_name pour le contrôle de concurrence d'accès. Lorsque le nombre est dépassé, le code d'erreur correspondant est renvoyé

Quantity limit_conn_status

Syntaxe : code limit_conn_status.

Valeur par défaut :503

Contexte de configuration : http, serveur, emplacement

Description : Lorsque l'accès dépasse le nombre limite, le code d'erreur est renvoyé au client. le code d'erreur peut être utilisé avec des paramètres tels que error_page Lors de l'accès Renvoyez une page d'erreur conviviale au client lorsque le quota est dépassé

● limit_rate

Syntaxe : limit_rate rate

Valeur par défaut : 0

Contexte de configuration : http, serveur, emplacement

Description : Limite le débit de chaque lien, le taux représente la vitesse de téléchargement par seconde

Quantity limit_rate_after

Syntaxe : limit_rate_after size

Contexte de configuration : http, serveur, emplacement

Remarque : Cette commande fonctionne avec limit_rate Lorsque le trafic dépasse la taille, limit_rate prendra effet

.

Exemple de configuration simple

limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    listen       80;
    server_name  www.domain.com;
    root   /path/;
    index  index.html index.htm;
    location /ip {
      limit_conn_status 503; # 超限制后返回的状态码;
      limit_conn_log_level warn; # 日志记录级别
      limit_rate 50; # 带宽限制
      limit_conn addr 1; # 控制并发访问
    }
    # 当超过并发访问限制时,返回503错误页面
    error_page 503  /503.html;
}
Copier après la connexion

module ngx_http_limit_req_module

Description

Ce module contrôle principalement le nombre de requêtes par unité temps. Utilisez l'algorithme « leaky bucket » pour le filtrage. Après avoir défini le taux limite, lorsque le nombre de requêtes par unité de temps dépasse le taux, le module détectera la valeur de rafale. Si la valeur est 0, la requête renverra une erreur basée sur. la configuration delay|nodelay.Ou wait; si burst est supérieur à 0, lorsque le nombre de requêtes est supérieur au taux mais inférieur à burst, la requête entre dans la file d'attente pour traitement.

Configuration des paramètres

Quantity limit_req_zone

Syntaxe : limit_req_zone key zone=name:size rate=rate

Contexte de configuration : http

Remarque : la clé est une variable dans Nginx, généralement $binary_remote_addr | $server_name ; le nom est le nom de la mémoire partagée, la taille est la taille de la mémoire partagée, le taux est la fréquence d'accès, en r/s, r/m. Cette configuration s'appliquera pour un nom d'espace mémoire partagé et enregistrera l'état d'accès de $key ;

Quantity limit_req

Syntaxe : limit_rate zone=name [burst=number] [nodelay|delay=number ]

Contexte de configuration : http, serveur, emplacement

Description : Activer les restrictions, burst définit la capacité maximale et nodelay détermine s'il faut attendre le traitement ou renvoyer un code d'erreur lorsque la requête dépasse la limit;

Les paramètres de configuration limit_req_log_level et limit_req_status sont cohérents avec le module ngx_http_limit_conn_module

Exemple de configuration simple

limit_req_zone $binary_remote_addr zone=req:10m rate=2r/m;
server {
    listen       80;
    server_name  www.domain.com;
    root   /path/;
    index  index.html index.htm;
    location /limit {
      limit_req zone=req burst=3 nodelay;
    }
    # 当超过并发访问限制时,返回503错误页面
    error_page 503  /503.html;
}
Copier après la connexion

Remarque

Les deux contrôles d'accès doivent être appliqués pour l'espace mémoire, puisqu'il y a de l'espace mémoire, il y aura bien sûr une situation où la mémoire sera épuisée. À ce moment-là, les nouvelles requêtes renverront une erreur, donc lorsque la limite d'accès est activée, une surveillance est nécessaire pour éviter qu’une telle situation ne se produise.

Résumé

Grâce à une brève introduction à l'architecture modulaire de Nginx, concentrez-vous sur la compréhension des fonctions et des paramètres de configuration des modules ngx_http_limit_conn_module et ngx_http_limit_req_module pour obtenir le contrôle simultané des requêtes de Nginx. S'il y a quelque chose qui ne va pas, faites-le moi savoir

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!

Étiquettes associées:
source:learnku.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal