nginx-iplimit

vim  nginx.conf:


HTTP模块(无cdn节点)


#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,

#以$binary_remote_addr 为key,限制平均每秒的请求为20个,

#1M能存储16000个状态,rete的值必须为整数,

#如果限制两秒钟一个请求,可以设置成30r/m

#limit_req_zone $binary_remote_addr zone=allips:100m rate=50000r/s;




HTTP模块(CDN节点)


## 针对原始用户 IP 地址做限制

limit_conn_zone $clientRealIp zone=TotalConnLimitZone:20m ;

limit_conn  TotalConnLimitZone  50;

limit_conn_log_level notice;

## 针对原始用户 IP 地址做限制

limit_req_zone $clientRealIp zone=ConnLimitZone:20m  rate=250r/s;

#limit_req zone=ConnLimitZone burst=10 nodelay; #如果开启此条规则,burst=10的限制将会在nginx全局生效

limit_req_log_level notice;





server模块


#限制每ip每秒不超过20个请求,漏桶数burst为5

#brust的意思就是,如果第1秒、2,3,4秒请求为19个,

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

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

#nodelay,如果不设置该选项,严格使用平均速率限制请求数,

#第1秒25个请求时,5个请求放到第2秒执行,

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

#limit_req zone=allips burst=20 nodelay;#allips HTTP模块定义后饮用的

你可能感兴趣的:(nginx-iplimit)