nginx+lua站点防止ip刷新数据处理

  1. nginx + lua 安装
    参考:http://openresty.org/cn/installation.html (官网)
    2.ngix,lua相关配置:
    1.nginx.conf 配置调整
    a.添加lua相关模块:
    lua_package_path ‘/usr/local/nginx-1.12.1/conf/lualib/?.lua;;’;
    lua_package_cpath ‘/usr/local/nginx-1.12.1/conf/lualib/?.so;;’;
    b.添加缓存
    lua_shared_dict lua_cache 128m;
    c.添加lua过滤文件(需要过滤的location 配置)
    rewrite_by_lua_file /usr/local/nginx-1.12.1/conf/limit_ip.lua;
    2.limit_ip.lua 逻辑
    a.用户登录(属于正常用户)
    local is_login= get_user_cookie(mem_ip,mem_port)
    if is_login ~= 0 then --=0 ck为空,其他状态 mem操作异常,或者ck存在 返回正常
    return
    end
    b.白名单过滤
    local is_ua_ok = white_ua_check()
    — white ua ok return
    if is_ua_ok == 1 then
    return 1
    end
    c.连接redis,当前请求ip频率逻辑处理
    – 连接redis
    local redis = require(‘resty.redis’)
    local red = redis.new()
    red:set_timeout(1000)
    local ok, err = red:connect(redis_ip,redis_port)
    if not ok then
    return close_redis(red)
    end
    local lua_limits_key = “visitpolicy:xxxx’:’…clientIP…”:limits"
    local limits_times,err1 = red:incr(lua_limits_key) – 存在设置自增
    if limits_times == 1 then --ip不存在
    red:expire(lua_limits_key,3600) --过期时间
    return close_redis(red)
    else
    if limits_times and tonumber(limits_times) >= forbidden_times then – --ip超过 403
    ngx.exit(403)
    else --正常范围
    close_redis(red)

3.相关测试数据(ab压测):
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值