Nginx通过ngx_http_limit_req_module实现限制请求数、限速、白名单

/etc/nginx/limit/white_list:白名单,key-value形式,支持掩码网段
#test
192.168.50.42 0;
192.168.50.0/24 0;

/etc/nginx/limit/limit_zone:
geo $whitelist {
default 1; # 不匹配白名单的都标记为1 参考2
include limit/white_list;
}
map $whitelist $limit {
1 $binary_remote_addr; # 1 保留源IP 参考3
0 ''; # 0 空 代表不作限制处理
}
limit_req_zone $limit zone=Limit123:32768 rate=2r/s; # 最小为1024*32=32768,再小就报错,参考4

/etc/nginx/limit/limit_req:
limit_req zone=Limit123 burst=5 nodelay;
limit_req_status 567;

#burst漏桶原理(参考5),以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率.

压测并tailf日志:
ab -n 50 -c 5 -k http://www.test.com

参考资料:
1 https://blog.csdn.net/weixin_38628533/article/details/80469712
2 https://www.cnblogs.com/kevingrace/p/6165572.html
3 https://www.cnblogs.com/zhengchunyuan/p/7410348.html
4 http://www.ttlsa.com/nginx/nginx-limiting-the-number-of-requests-ngx_http_limit_req_module-module/
5 https://www.cnblogs.com/codingmode/p/11872055.html

================# 水平有限 欢迎留言 批评指正 #=================
原文地址:https://www.cnblogs.com/max27149/p/12017042.html