Nginx的请求限制:
连接频率的限制:limit_conn_module
配置语法:limit_conn_zone key zone=name:size;
默认状态:-
配置方法:http
配置语法:limit_conn zone number;
默认状态:-
配置方法:http、server、location
请求频率限制:limit_req_module
配置语法:limit_req_zone key zone=name:size rate=rate;
默认状态:-
配置方法:http
配置语法:limit_req_zone=name [burst=number] [nodelay] ;
默认状态:-
配置方法:http、server、location
同一个ip,限制为每秒钟只能访问一次,
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s
zone=req_zone:1m:定义一个空间,名字为zone,大小为1兆
remtoe_addr:客户端的ip
执行配置语法检查,并重启nginx
nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf
这里用到ab这个工具进行并发测试
ab -n 50 -c 20 http://192.168.1.141/1.html
-n:总共发起的请求数,这里设置为50
-c:同事并发的请求,这里设置为20个
请求之前配置好的测试页面
每秒624个请求
再继续配置,遇到什么场景就对应配置就行了,这里去掉注释生效
limit_conn conn_zone 1; 限制服务端同一时刻只允许一个ip连接
limit_req zone=req_zone burst=3 nodelay; 客户端超过上面设置的速率过后,遗留3个到下一秒执行,剩下的返回503
limit_req zone=req_zone burst=3;
limit_req zone=req_zone; 开启过后同一个ip在每秒钟只能请求成功一个,剩下的可以在error.log里面看到相应的错误日志