Maison > Article > Opération et maintenance > Comment utiliser nginx pour implémenter une limitation de courant distribuée
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
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
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
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 :
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 :
indique que sur mon serveur. cluster, utilisez la configuration limitante actuelle nommée perip
4. Utilisez docker pour déployer nginxCopiez 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
Le 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
J'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.
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!