http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
配置方法
修改nginx的配置文件, 在http{}下增加
# 创建一个10MB大小的请求记录zone, 限制同一IP的访问每分钟60次 limit_req_zone $binary_remote_addr zone=req_perip:10m rate=60r/m; # 创建一个10MB大小的连接数记录zone, 记录同一IP的同时连接数 limit_conn_zone $binary_remote_addr zone=con_perip:10m;
在server{} 或 location{} 下增加
# 对指定的zone, 设置突发余量限制为5, 不延迟统计 limit_req zone=req_perip burst=5 nodelay; # 对指定的zone, 限制同时连接数不超过1 limit_conn conperip 1;
注: 对于设定了连接数限制的, 检查 worker_processes 的值, 如果这里设置的数值还不到连接数的限制, 连接数限制永远不会被触发.
Update 2017-03-13:
在生产环境上测试的结果:
limit_req_zone的rate设置为120r/m, burst设置为60~120基本上可以满足绝大部分情况 -- 这个一定程度上取决于页面上元素的多少
limit_conn 设置为5基本上可以满足绝大部分情况