前言:
而今朋友们对“nginx登陆过期”都比较关怀,兄弟们都需要剖析一些“nginx登陆过期”的相关资讯。那么小编同时在网摘上搜集了一些有关“nginx登陆过期””的相关文章,希望各位老铁们能喜欢,各位老铁们快快来学习一下吧!1. nginx + lua 安装
参考:[]() (官网)
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压测)
标签: #nginx登陆过期