Maison  >  Article  >  base de données  >  Comment Nginx utilise Lua+Redis pour interdire dynamiquement les IP

Comment Nginx utilise Lua+Redis pour interdire dynamiquement les IP

WBOY
WBOYavant
2023-05-26 10:50:541897parcourir

1. Contexte

Dans notre maintenance quotidienne du site Web, nous sommes souvent confrontés à une telle exigence. Afin d'empêcher certains robots d'exploration ou utilisateurs malveillants de faire des requêtes au serveur, nous devons établir une liste noire d'adresses IP dynamique. Pour les IP figurant sur la liste noire, les services seront refusés.

2. Architecture

Il existe de nombreuses façons d'implémenter la fonction de liste noire IP :

1 Au niveau du système d'exploitation, configurez iptables pour rejeter les requêtes réseau pour les IP spécifiées ; Au niveau de l'application, via l'option de refus de nginx ou le plug-in Lua, configurez la liste noire des adresses IP.

3 Au niveau de l'application, vérifiez si l'adresse IP du client est dans la liste noire avant de demander le service.

Afin de faciliter la gestion et le partage, nous implémentons la fonction de liste noire IP via l'architecture nginx+lua+redis Le schéma d'architecture est le suivant :

Comment Nginx utilise Lua+Redis pour interdire dynamiquement les IPDiagramme d'architecture


Mise en œuvre

1. . Installez le module nginx+ Lua, il est recommandé d'utiliser openresty, qui est un serveur nginx qui intègre divers modules Lua :

openrestyComment Nginx utilise Lua+Redis pour interdire dynamiquement les IP

2 Installez et démarrez le serveur redis ;

3.

Configuration nginx

Comment Nginx utilise Lua+Redis pour interdire dynamiquement les IP
Parmi eux

lua_shared_dict ip_blacklist 1m ;

se voit allouer un espace mémoire partagé de 1 million par le processus nginx pour mettre en cache la liste noire des adresses IP, voir :

https://github.com/openresty /lua-nginx -module#lua_shared_dict

access_by_lua_file lua/ip_blacklist.lua;

Spécifiez l'emplacement du script lua

4. Configurez le script lua pour obtenir régulièrement la dernière liste noire IP de redis. Pour le contenu du fichier, voir. :

https://gist .github.com/ceelog/39862d297d9c85e743b3b5111b7d44cb

contenu du script lua

Comment Nginx utilise Lua+Redis pour interdire dynamiquement les IP
5. Créez un nouveau type d'ensemble de données ip_blacklist sur le serveur Redis et ajoutez la dernière liste noire IP.

Après avoir terminé les étapes ci-dessus, rechargez nginx et la configuration commencera à prendre effet

À ce moment, accédez au serveur Si votre adresse IP est dans la liste noire, l'accès refusé apparaîtra :

Accès refusé

Comment Nginx utilise Lua+Redis pour interdire dynamiquement les IP.

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