redis-ip-dynamic

A Lua library for resty to put remote ip into redis dynamicly

$ 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使用的port 默认6379

  3. password redis的密码默认为空

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

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

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

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

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

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

  10. expire_black_ip_in_second 表示黑名单默认封禁时间 默认为24h

原理

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

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

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

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

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 66:

=over without closing =back

Authors

QiXiaobo(qixiaobo.nj@gmail.com)

License

2bsd

Dependencies

Versions