Ngx+Lua+Redis 实时IP黑名单系统

实时黑名单系统,如果用php脚本实现很容易,但是效率惨不忍睹呀。
要想速度快还的在nginx层实现阻塞。如果iptables 层阻塞速度更快,但是黑名单列表如果有更新就必须要重载配置,实现还是有难度的。php管理后台把黑名单ip写入到redis,nginx层使用lua脚本去redis查询ip是否在黑名单里,实现实时控制。

OpenResty就是嵌入了LuaJIT VM的Nginx,LuaJIT即采用C语言写的Lua代码的解释器。熟悉简单的Lua语言和nginx基础知识就可以上手开发简单功能了。

你可以单独安装OpenResty,如果是宝塔面板也可以直接切换版本 nginx openresty



直接上代码。
整个系统的瓶颈在redis,我们要优化redis连接,需要连接池。

lua_shared_dict my_cache 10m;
server
{ 
.........

先创建一个内存缓存区,名称:my_cache 容量:10m
ngx+lua 中没有全局变量我们需要把redis的链接函数存储到这个 my_cache 里面使用其他地方使用的时候直接读取缓存里的函数代码,再运行函数得到一个redis连接

local my_cache = ngx.shared.my_cache
local redis_connect_code = my_cache:get("redis_connect")

if not redis_connect_code then
    local function redis_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hangbobo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值