基于nginx+lua实现防火墙动态规则请求限制

本文介绍如何利用nginx和redis实现类似于WAF防火墙的功能,包括白名单、黑名单、用户cookie和用户IP的规则设定,并通过实例展示如何在location/uri中使用access_by_lua_block和access_by_lua_file进行复杂逻辑处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于nginx,使用redis存储标志.

实现waf防火墙类似功能

location /uri {

        access_by_lua_block {

             if ngx.var.path then 

                ngx.say('filter')

                ngx.exit(ngx.HTTP_OK)

             end

        }

       proxy_pass http://10.10.10.1/python;

}

可以针对access_by_lua_file写很长的业务逻辑,

1) 白名单,黑名单

2) 用户cookie

3) 用户ip

都可以实现这些规则,将标记量存放到redis里面.

针对proxy_pass功能的业务是可以使用这种方式来实现的.

已经有人基于waf这种方式来控制请求参数,是否非法.

可以查看loveshell牛逼waf的项目: https://github.com/loveshell/ngx_lua_waf

lua的github项目地址超级牛逼的

   https://github.com/openresty/lua-nginx-module

https://blog.cloudflare.com/cloudflares-new-waf-compiling-to-lua/

转载于:https://my.oschina.net/u/1538135/blog/685409

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值