当前位置:首页 > nginx > 正文

nginx限流模块原理(nginx好用的模块)

  • nginx
  • 2024-04-08 01:15:16
  • 9035

😍nginx限流功能
最近老大布置任务,需要对网站进行限流,要求每个IP每秒只能访问1次。 百度后,发现nginx的limit_req命令基本可以满足我们的需求。
配置如下:
以上配置中使用的是nginx的ngx_http_limit_req_module模块,用来限制单个IP的请求数。
语法:limit_req_zonebinary_remote_addrzone=mylimit:10mrate=1r/s;
说明:
1.$binary_remote_addr,表明是以remote_addr为限制目标,加上binary是为了压缩内存占用空间
2.zone=name:size,分配一个以name为名的并且大小为size的内存空间,用来存储访问的频次信息
3.rate=rate,如rate=1r/s表示同一个IP每秒只允许一个请求通过
语法:limit_reqzone=name[burst=number][nodelay|delay=number];#放在location区域内
实例:limit_reqzone=mylimitburst=5nodelay;
说明:
1.zone=mylimit,对应http区域中配置的zone
2.burst=5,表示设置一个大小为5的缓冲区,超过频次限制的请求先放入这个缓冲区
3.nodelay,设置后超过频次限制以及缓冲区满了的情况下返回503状态码;如不设置,那么额外的请求将进入等待排队的状态
语法:limit_req_log_levelinfo|notice|warn|error#可放入http,server,location区域
实例:limit_req_log_levelerror
说明:当超出限速及被缓存后,写入日志(对应相应的日志级别)
语法:limit_req_statuscode#可放入http,server,location区域
实例:limit_req_status503
说明:自定义拒绝请求后返回的状态码
参考:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
http://www.cnblogs.com/biglittleant/p/8979915.html