代码拉取完成,页面将自动刷新
同步操作将从 haixing/lua-limit 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
local limit_require = require "limit"
local utils = require "utils"
-- local cookie = require "resty.cookie":new()
-- cookie:set({
-- key = "city",
-- value = "1",
-- path = "/",
-- domain = "example.com"
-- });
conf = {
default_rule = {
limiter = {}
},
probability_rule = {
probability = {
probability_rate = 10
}
},
date_range_reject_rule = {
date_range = {
start_datetime = {year=2018, month=03, day=30, hour=0, min=0, sec=0},
end_datetime = {year=2018, month=04, day=31, hour=0, min=0, sec=0}
-- week_day = {3,4,6,7}
},
limiter = {}
}
}
limit = limit_require:new(conf)
-- 在cookie找到限流目标,则全部限掉
function city_in_cookie_who(limit)
local city, err = utils.get_cookie("city")
if city ~= nil then
return true, {rule="default_rule", message=echo_message}
else
return false
end
end
-- 针对 GET 或者 POST 请求参数中如果有 city_num 的目标进行匹配
-- 在请求参数中找到限流目标,则限制50%概率
function city_in_args_who(limit)
-- local redis = limit:get_redis()
local args = limit.args
local city_num = args["city_num"]
-- city_num 25 江苏南京
if city_num == "25" then
return true, {rule = "probability_rule", message=echo_message, data={city="25"}}
else
return false
end
end
-- 针对时间范围目标匹配
-- 可以使用 http://www.somehost.com/some_location 来访问
-- 使用默认的 message 方法
function date_range_who(limit)
return true, {rule = "date_range_reject_rule"}
end
-- 输出消息
function echo_message(limit, data)
ngx.say("rejected anyway!")
ngx.exit(ngx.HTTP_OK)
end
limit:who({city_in_cookie_who, city_in_args_who, date_range_who})
limit:execute()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。