基于条件的限速功能

来自SEnginx
跳转至: 导航, 搜索

目录

基于条件的限速功能

概要

本功能基于tengine的limit_req模块,该模块针对原始nginx的limit_req功能在IP白名单、多条件限速以及forbid_action等方面进行了增强,SEnginx在此基础上增加了condition参数,只有条件为真时才执行限速动作,这样limit_req模块和机器人缓解模块以及访问行为识别模块配合使用,可以实现更加严格且多样化的限速策略。

此模块在1.5.10之后的SEnginx中提供。

增强

增加了condition参数,用法:

limit_req_zone $binary_remote_addr $request_uri zone=cc:10m rate=1r/s;

server {
    location / {
        limit_req zone=cc burst=1 forbid_action=@process condition=$cond;    #如果$cond为真,则执行限速动作
    }

    location @process {
        return 403;
    }
}

配置示例

和机器人缓解模块组合使用

location ~ /bbs/.*\.php {
    limit_req zone=cc burst=5 forbid_action=@process;

    proxy_pass http://backend;
}

location @process {
    ns_layer_force_run;

    robot_mitigation on;
    robot_mitigation_blacklist 10;

    proxy_pass http://backend;
}

对关键资源进行限速,如果超过burst导致丢请求,则先进行机器人挑战,以减少误报。
更多配置示例,请参考访问行为识别模块的文档中的配置示例一节。

个人工具
名字空间
  • 页面
  • 讨论

变换
操作
导航
其他语言
工具箱