• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

init_config_file.lua

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
--[[
读取限流配置
--]]

--获取共享内存
local limit_req_store = ngx.shared.limit_req_store
--初始化拒绝 URI 列表
reject_uri_tab = {}

-- 重新初始化拒绝 URI 列表
local function resetRejectUri(uri_list)
    if uri_list ~= nil then
        reject_uri_tab = {}
        while (string.len(uri_list) > 0) do
            local s, e = string.find(uri_list, ",")
            if e ~= nil then
                local str = string.sub(uri_list,1,s-1)
                uri_list = string.sub(uri_list, e+1,string.len(uri_list))
        reject_uri_tab["rejected"..str]="rejected"
      else
        reject_uri_tab["rejected"..uri_list]="rejected"
        break
      end
        end
    for key, value in pairs(reject_uri_tab) do
      ngx.log(ngx.DEBUG, "nginx limit module reject uri :",key)
    end
    end
end

-- 设置共享内存
local function setSharedDict(data)
    while (string.len(data) > 1)
    do
        local a, b = string.find(data,"\n")
        if b ~= nil then
            local str = string.sub(data,1,a-1)
            data = string.sub(data,b+1,string.len(data))
            local a1, b1 = string.find(str, "=")
            local str1 = string.sub(str,1,a1-1)
            local str2 = string.sub(str,b1+1,string.len(str))
            ngx.log(ngx.DEBUG,"limit config property: ",str1, " = ",str2)
            limit_req_store:set(str1,str2)
        else
            local a1, b1 = string.find(data,"=")
            local str1 = string.sub(data,1,a1-1)
            local str2 = string.sub(data,b1+1,string.len(data))
            ngx.log(ngx.DEBUG,"limit config property: ",str1, " = ",str2)
            limit_req_store:set(str1,str2)
            ngx.log(ngx.DEBUG, "nginx request limit initialize file has been successful read.")
            break
        end
    end
    resetRejectUri(limit_req_store:get("reject_uri_list"))
end


-- 读限流配置文件
local function fileRead()
    local file = io.open("/wls/appsystems/conf/lua-module/overload_protect_config.txt","r")
    --local file = io.open("/Users/zuodejun595/work/openresty-lua-project/nginx_limit_req/overload_protect_config.txt","r")
    if file == nil then
        ngx.log(ngx.ERR, "nginx request limit initialize file not exist.")
        return
    end
    local data = file:read("*a") --从当前位置读取整个文件。例:file.read("*a")
    ngx.log(ngx.DEBUG, "read file result:", data)
    file:close()
    setSharedDict(data)

    --过载保护策略总开关,若开关关闭,则全部策略失效
    --[[
    local overload_protection_switch = limit_req_store:get("overload_protection_switch")
    if (overload_protection_switch ~= nil and overload_protection_switch == "N") then
            ngx.log(ngx.ERR, "nginx request limit strategy has shutdown.")
        return
    end
    --]]

    ngx.log(ngx.INFO,"nginx request limit module will read config file after 5 seconds.")
    ngx.timer.at(5,fileRead)
    --ngx.timer.at(30,fileRead)
end

-- 方法执行入口
fileRead()

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua与C/C++互操作发布时间:2022-07-22
下一篇:
lua中单引号和双引号和/的输出的问题发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap