基于条件的限速功能
来自SEnginx
2014年3月9日 (日) 07:36Root (讨论 | 贡献)的版本
目录 |
基于条件的限速功能
概要
本功能基于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导致丢请求,则先进行机器人挑战,以减少误报。
更多配置示例,请参考访问行为识别模块的文档中的配置示例一节。