原文:https://segmentfault.com/a/11...为了屏蔽某些爬虫或者恶意用户对服务器的请求,我们需要创建一个动态IP黑名单。对于黑名单中的IP,拒绝服务。IP黑名单功能的实现方式有很多种:1、在操作系统层面,配置iptables拒绝指定IP的网络请求;2、在WebServer层面,通过Nginx自身或者lua插件的deny选项配置IP黑名单;3.在应用层面,在请求服务前检查客户端IP是否在黑名单中。为了方便管理和共享,我们选择通过Nginx+Lua+Redis的架构来实现IP黑名单的功能。架构图如下:1.推荐使用OpenResty安装Nginx+Lua模块,它是一个集成各种Lua模块的Nginx服务器:2.安装并启动Redis服务器3.配置Nginx示例:Nginx配置,其中lua_shared_dictip_blacklist1m由Nginx进程分配一个1M的共享内存空间,用于缓存IP黑名单。access_by_lua_filelua/ip_blacklist.lua;指定lua脚本位置。4、配置lua脚本,定时从Redis获取最新的IP黑名单。5、在Redis服务器新建Set类型数据ip_blacklist,添加最新的IP黑名单。完成以上步骤后,重新加载nginx,配置即可生效。此时访问服务器时,如果你的IP地址在黑名单中,会拒绝访问,如下图:以上是Nginx+Lua+Redis实现的IP黑名单功能,具有以下优点:1.配置简单,重量轻2.多台服务器可以通过Redis实例共享黑名单;3、动态配置,Redis中的黑名单可以手动设置,也可以自动设置。近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
