redis-ip-dynamic

一个用于 resty 的 Lua 库,可将远程 IP 动态存入 Redis

$ opm get qixiaobo/redis-ip-dynamic

实例

    local redis_ip_dynamic = require "resty.redis-ip-dynamic"
    local ip_dynamic_banner = redis_ip_dynamic:new({ host = "192.168.12.203" })

配置

  1. host redis 使用的 IP,暂不支持域名,默认 127.0.0.1

  2. port redis 使用的端口,默认 6379

  3. password redis 的密码,默认为空

  4. db_index redis 的数据库,默认 0

  5. timeout 表示连接池中持有时间,默认 60 秒

  6. pool_size 连接池大小,默认 100

  7. prefix 表示限制的业务键前缀,默认 limit:,建议按照业务定义,比如 data

  8. expire_time_in_second 表示过期时间,默认 1 小时,表示统计 IP 的间隔

  9. black_list_threshold 表示 expire_time_in_second 出现的次数,即为黑名单触发,需要放入黑名单列表中,默认 500

  10. expire_black_ip_in_second 表示黑名单默认封禁时间,默认 24 小时

原理

  1. 判断是否白名单,如果是则放行

  2. 如果不是白名单,校验是否黑名单,如果是黑名单则返回 true

  3. 以小时级别进行 IP 的调用次数累加,当达到阈值后,将该 IP 放入黑名单,并设置过期时间

  4. 以天级别进行调用次数统计,当达到阈值后,执行降级

POD 错误

嘿!上面的文档有一些编码错误,解释如下:

大约在第 66 行

=over 没有关闭 =back

作者

QiXiaobo(qixiaobo.nj@gmail.com)

许可证

2bsd

依赖项

版本