首先在nginx.conf 文件中的http节点添加:
lua_shared_dict limit_req_store 10m;
以下是lua并发限流代码:
local limit_req = require "resty.limit.req"
--限制请求速率为500 req/sec
local lim,err = limit_req.new("limit_req_store",5,0)
if not lim then --申请limit_req对象失败
ngx.log(ngx.ERR,"failed to instantiate a resty.limit.req object: ",err)
return ngx.exit(500)
end
-- 下面代码针对每一个单独的请求
-- 使用ip地址作为限流的key
local key = ngx.var.binary_remote_addr
local delay,err = lim:incoming(key,true)
if not delay then
if err == "rejected" then
return ngx.exit(503)
end
ngx.log(ngx.ERR,"failed to limit req: &#