阅读 108

通过lua将nginx请求状态码转变为自定义状态码

背景:安全组同学使用固定user-agent去扫描我们的网站,造成告警误报,需要将相关扫描资源的状态码修改,避免无效告警

登录后复制

思路:在nginx请求的header_filter_by_lua阶段,将请求状态码修改为自定义状态码

直接上代码,将以下代码写入配置文件xxx.lua,在相对应的域名下引用就可以了:
header_filter_by_lua_file "xxx.lua";

登录后复制

local log_time = os.date("%Y-%m-%d %X",os.time())local ngx_lua_ua_log = "/data/nginx/log/sec.lua.log"local status = ngx.var.statuslocal user_agent = ngx.var.http_user_agentlocal host = ngx.var.hostlocal function add_quote(str)    return string.format('"%s"', str)
endlocal function logging(log_file, msg)
    file = io.open(log_file, "a+")
    file:write(msg)
    file:flush()
    file.close()
endif user_agent == "xxx" and ngx.status ~= 200 then
    ngx.status = "211"
    local msg = table.concat({
        add_quote(log_time),
        add_quote(host),
        add_quote(user_agent),
        add_quote(ngx.status),        "\n"
    }, " ")
    logging(ngx_lua_ua_log, msg)else
    returnend

经过测试,所有以xxx的user-agent且状态码不为200的请求都修改为了”211“,具体情况,可以自己修改;


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐