Maison  >  Article  >  Opération et maintenance  >  Comment utiliser nginx pour implémenter une limitation de courant distribuée

Comment utiliser nginx pour implémenter une limitation de courant distribuée

WBOY
WBOYavant
2023-05-13 12:07:141219parcourir

1. Introduction

Généralement, les systèmes exposés au monde extérieur recevront un grand nombre de demandes lors de promotions ou d'attaques de pirates informatiques. Afin de protéger le système contre la submersion par le trafic simultané élevé qui arrive instantanément, il est nécessaire de le faire. pour limiter le flux.

2 .Déployez d'abord un programme qui expose l'interface au monde extérieur

Ce que je déploie ici est un projet Spring Boot qui expose l'interface suivante, qui est très simple

Comment utiliser nginx pour implémenter une limitation de courant distribuée

Expose une requête get qui renvoie une interface reposante de hello world.

Ce programme est déployé sur un serveur Linux. Je n'entrerai pas dans les détails des étapes de déploiement. Vous pouvez le déployer vous-même en utilisant Baidu Spring Boot.

Ici. Je recommande à tout le monde un groupe d'apprentissage et d'échange en architecture. Numéro du groupe de communication et d'apprentissage : 575745314. Il partagera quelques vidéos enregistrées par des architectes seniors : spring, mybatis, analyse du code source netty, principes de haute concurrence, haute performance, distribué, architecture microservice, optimisation des performances jvm, architecture distribuée, etc. sont devenus un système de connaissances nécessaire pour les architectes. Vous pouvez également recevoir des ressources d'apprentissage gratuites, et vous en avez beaucoup bénéficié jusqu'à présent

Comment utiliser nginx pour implémenter une limitation de courant distribuée

3 Créez un fichier de configuration nginx nommé nginx.conf

Créez un fichier de configuration nommé nginx.conf, le contenu complet est le suivant. suit

Comment utiliser nginx pour implémenter une limitation de courant distribuée

Explication de la partie limitante actuelle dans le fichier de configuration :

Comme ci-dessus, la configuration limitante actuelle de nginx n'a que deux lignes de code

La première ligne :

Comment utiliser nginx pour implémenter une limitation de courant distribuée

limit_req_zone : est. la déclaration de limitation actuelle.

$binary_remote_addr : Cela signifie limiter le courant en fonction de l'adresse IP du client. Par exemple, la configuration de limitation actuelle ci-dessus limite la fréquence de demande de chaque adresse IP client à une fois par seconde si vous agissez comme un voyou deux fois. par seconde, le courant sera limité et une erreur http 503 vous sera renvoyée. .

zone=perip : signifie utiliser le nom perip pour identifier cette ligne de configuration de limitation de courant. Cette ligne de configuration de limitation de courant sera référencée par. le nom perip plus tard (c'est-à-dire que la configuration limite actuelle peut être définie comme multiple)

10m : Indique que l'espace pour stocker l'IP du client est de 10 Mo, 1 Mo stocke environ plus de 10 000 IP, 10 Mo stocke environ plus de 100 000. IPs. Explication de référence : ... Recherchez binaire_remote_addr dans cet article pour localiser les explications associées.

rate=1r/s : Indique que la fréquence est d'une requête par seconde :

Comment utiliser nginx pour implémenter une limitation de courant distribuée indique que sur mon serveur. cluster, utilisez la configuration limitante actuelle nommée perip

4. Utilisez docker pour déployer nginx

Copiez le fichier de configuration nginx.conf créé à l'étape précédente dans le répertoire Linux, /root/nginx/ (le répertoire peut être arbitraire). ), puis utilisez une commande docker pour déployer l'environnement nginx

Comment utiliser nginx pour implémenter une limitation de courant distribuéeLe port 8080 est exposé ici. Le nœud d'équilibrage de charge dans la configuration nginx est accessible via le port 8080, c'est-à-dire l'adresse IP 192.168.10.253:8090. port. Ce port ip correspond au programme hello world créé et déployé dans la première étape

Utilisez le code pour accéder à celui défini dans la première étape de l'interface helloworld

Comment utiliser nginx pour implémenter une limitation de courant distribuéeJ'exécute ici 10 requêtes get par seconde, ce qui est. déjà supérieur au taux = 1r/s configuré dans nginx pour demander une fois par seconde, vous verrez donc une erreur 503, comme suit.

Comment utiliser nginx pour implémenter une limitation de courant distribuée Si vous modifiez le code et exécutez la requête get une fois par seconde, aucune erreur sera signalé. Vous pouvez l'essayer

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer