nginx的CC防护规则 该如何调整来进行速度限制

变量ngx_https_limit_req_lookup的逻辑关系是:

简易而言,变量ngx_https_limit_req_lookup的意义就用于判定目前的limit是能够解决目前的post请求或是须要把目前post请求丢掉。变量ngx_https_limit_req_lookup搜索相匹配目前的https_request的配对结论。NGX_buzy说明明显超预算,早已超出burst阀值,须要回到错误代码。NGX_OK说明本规则超预算,须要延迟时间解决。NGX_ifyou本规则并没有超预算,要检验下个规则。

outputo-20210923-091025-240-makk.png

依据key值在二叉查找树中搜索是否早已已经相匹配节点存有。假如早已存有,则依据节点的excess及其设定的速度基本参数,估算从之前post请求到现在系统软件还会继续有多少post请求并没有解决。要是没有解决到的post请求总数超出设定的burst总数,说明不可以解决目前post请求。则回到NGX_buzy。相反,假如系统软件能够解决目前post请求,而且查寻的是location最后面一个limit_req界定的规则,则回到NGX_OK。要不是最后面一个,则回到NGX_ifyou再次搜索下个limit_req规则。

假如key值相匹配的节点在目前的二叉查找树中找不到,则转化成1个key值节点插进到二叉查找树中。函数调用ngx_https_limit_req_expire来收回二叉查找树中1到2个早已超出60秒并没有被引入,也并没有速度限制的节点。


在转化成新节点申请办理slab中运行内存时,假如申请办理不成功则会函数调ngx_https_limit_req_expire尽可能放出并没有被引入的老的运行内存块。变量ngx_https_limit_req_account的逻辑关系是:简易地说,变量ngx_https_limit_req_account是在NGINX确定早已能够解决目前post请求了,随后应用此函数计算须要延迟时间多长时间来解决这一post请求。解析xml全部的tuned二维数组中的原素,运用漏桶优化算法估算出每一个命中率的limit原素中较大 的usleep总数。随后回到usleep的最高值。


分享: