Nginx 单IP请求速率限制

Nginx 服务器可帮助我们实现对单个ip的请求速率限制

具体实现如下

http{

        limit_req_zone $binary_remote_addr  zone=one:10m  rate=10r/s;

         ...

       server{


          location/search/{

             limit_req zone=one burst=5;

             }

        limit_req_zone $session_variable zone=name_of_zone:size  rate=rate 这句是设置存储session的区域 大小 并设置速率限制

       $session_variable 意思是摄者session存储的值key值  我们以$binary_remote_addr(用户ip)为key

       zone 意思是设置存储key的区域名称

       size 意思是区域大小 此处设置是10MB ,1 MB区域可容纳大约16000个此大小的状态。

       rate 意思是设置限制的速率    1r/s => 是1秒 一个请求   2r/s=> 两秒一个  2r/m=>一分钟两个(具体看自己需求)

       设置好之后在server区域的location中   开启当前命中区域的限制    limit_req   zone=one ;  如此即可实现

       #限制每ip每秒不超过10个请求,爆发数burst为5#brust的意思就是,如果第1秒、2,3,4秒请求为9个,

       #第5秒的请求为15个是被允许的。

       # 但是如果你第1秒就15个请求,第2秒超过10的请求返回503错误。

        #nodelay,如果不设置该选项,严格使用平均速率限制请求数,#第1秒5个请求时,5个请求放到第2秒执行,

       #设置nodelay,15个请求将在第1秒执行。

   

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容