Maison >Opération et maintenance >Nginx >Comment utiliser Nginx pour limiter le débit de requêtes et contrôler le flux

Comment utiliser Nginx pour limiter le débit de requêtes et contrôler le flux

PHPz
PHPzoriginal
2023-08-03 23:42:221739parcourir

Comment utiliser Nginx pour limiter le débit de requêtes et contrôler le flux

Nginx est un serveur Web et un serveur proxy léger doté de hautes performances et de capacités de traitement à haute concurrence, adapté à la création de grands systèmes distribués. Dans les applications pratiques, afin d'assurer la stabilité du serveur, nous devons souvent limiter le débit et le flux des requêtes. Cet article expliquera comment utiliser Nginx pour la limitation du débit de requêtes et le contrôle de flux, et fournira des exemples de code.

  1. Limite du taux de requêtes

La limite du taux de requête fait référence à la limitation du nombre de requêtes que chaque client peut lancer au cours d'une certaine période de temps. Cela peut empêcher un client de solliciter le serveur trop fréquemment, entraînant une consommation excessive des ressources du serveur.

Tout d'abord, ajoutez le code suivant au fichier de configuration Nginx :

http {
    # 定义限速区域,以client IP为准
    limit_req_zone $binary_remote_addr zone=limit:10m rate=10r/s;
    
    server {
        listen 80;
        
        # 使用limit_req模块限制请求速率
        location / {
            limit_req zone=limit burst=20;
            proxy_pass http://backend;
        }
    }
}

La configuration ci-dessus limitera chaque client à lancer jusqu'à 10 requêtes en 1 seconde, et les requêtes dépassant la limite seront retardées.

  1. Contrôle de flux

Le contrôle de flux fait référence à la planification et au déchargement des requêtes via Nginx pour optimiser la charge du serveur et améliorer l'expérience utilisateur. En allouant rationnellement les ressources du serveur, vous pouvez garantir que les différents types de requêtes peuvent être traités de manière appropriée.

Ce qui suit est un exemple de code pour le contrôle de flux :

http {
    # 定义后端服务器
    upstream backend {
        server backend1;
        server backend2;
    }
    
    server {
        listen 80;
        
        location /api/ {
            # 根据请求路径进行分流
            if ($request_uri ~* "^/api/v1/") {
                proxy_pass http://backend1;
            }
            if ($request_uri ~* "^/api/v2/") {
                proxy_pass http://backend2;
            }
        }
        
        location / {
            # 静态文件请求走本地硬盘
            try_files $uri $uri/ =404;
        }
    }
}

La configuration ci-dessus transmettra de manière sélective le trafic vers le serveur backend en fonction du chemin demandé. Par exemple, les requêtes commençant par /api/v1/ seront transmises au serveur backend1 et les requêtes commençant par /api/v2/ seront transmises au serveur backend2.

Vous pouvez combiner d'autres modules de Nginx pour effectuer un contrôle du trafic plus complexe en fonction des besoins réels, comme un contrôle plus précis du trafic via la fréquence d'accès HTTP, l'adresse IP de l'utilisateur ou les cookies.

Résumé :

Grâce aux exemples ci-dessus, nous avons appris à utiliser Nginx pour la limitation du débit de requêtes et le contrôle de flux. La limitation du débit de requêtes peut empêcher les requêtes malveillantes de provoquer une pression excessive sur le serveur, tandis que le contrôle de flux peut raisonnablement allouer les ressources du serveur en fonction des différents besoins et améliorer l'expérience utilisateur. En configurant correctement Nginx, nous pouvons mieux garantir la stabilité et les performances du serveur.

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:
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