Maison > Article > base de données > Comment Nginx utilise Lua+Redis pour interdire dynamiquement les IP
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 :
Diagramme d'architecture
1. . Installez le module nginx+ Lua, il est recommandé d'utiliser openresty, qui est un serveur nginx qui intègre divers modules Lua :
openresty
2 Installez et démarrez le serveur redis ;
3.
Configuration nginx
Parmi eux
lua_shared_dict ip_blacklist 1m ;
https://github.com/openresty /lua-nginx -module#lua_shared_dictse 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 :
access_by_lua_file lua/ip_blacklist.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 luaSpécifiez l'emplacement du script lua
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.
.
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!