ngx_waf–完整、简单、高性能的 nginx 防火墙模块
資深大佬 : c137rick 0
ngx_waf 是一个用 C 语言开发的 nginx 防火墙模块。
相关链接
Github: https://github.com/ADD-SP/ngx_waf
文档也可以在 Github 上找到,文档自认为很详细。
功能完整
- IP 黑白名单,支持 IPV4 和 IPV6,支持地址块的表示。
- CC 防护,自动拉黑恶意 IP 一段时间。
- URL 和 Referer 黑白名单,使用正则写规则。
- POST 、User-Agent 、Query String 和 Cookie 黑名单,使用正则写规则。
使用简单
配置简单,配置只需要五行。提供默认规则,开箱即用。
# on 表示启用,off 表示关闭。 waf on; # 规则文件所在目录的绝对路径,必须以 / 结尾。 waf_rule_path /path/to/rules/; # 防火墙工作模式,STD 表示标准模式。 waf_mode STD; # CC 防御参数,1000 每分钟请求次数上限,60 表示超出上限后封禁对应 ip 60 分钟。 waf_cc_deny_limit 1000 60; # 用于缓存检查结果的内存空间的大小,设置为 10 MB 。目前仅开发版可用。 waf_cache_size 10m;
高性能
IP 黑白名单的检查花费常数时间,即花费的时间与 IP 黑白名单的规模无关。
其余的检查会挨个匹配正则,直到匹配到为止。匹配结果会被缓存起来,下次检查时就可以直接读取缓存的结果。目前仅开发版启用了缓存,经过测试已经基本稳定。
POST 检查的结果不会缓存,因为太占内存。
如果你愿意的话也可以测试性能哦,有问题的话欢迎指教。
其它
之前的帖子:一个 nginx 防火墙模块: ngx_waf
之前在 V2EX 宣传过这个项目,现在再发一次的理由是优化了性能,原本都是暴力循环的,现在都已经优化了。
再发一次的目的自然是想多涨点 star,所以如果觉得好用的话记得点个 star ~
大佬有話說 (3)