受限于服务器硬件设备带宽限制,为降低大量用户同时下载使得带宽被占满,导致常规功能请求无法正常处理,故使用Nginx对每个用户进行限速处理。
http{
limit_conn_zone $binary_remote_addr zone=add:10m rate=20r/s; #创建5M的一个名为名为add的限速池的容器对连接进行计数(每个连接占用32或64字节,若10M内存耗尽,将返回503),rate为每秒限制的请求数。
......
server{
listen 80;
server_name 192.168.1.1;
limit_conn add 2; #限制每个IP只能同时发起2个连接(add 要跟 limit_conn_zone 的变量名相同)
limit_rate 50k; #每个请求限速 50KB/秒
limit_rate_after 400k; #在下载400k后开始限速
}
......
}
对单个IP的限速上限为(同时发起的连接数)*(每个请求限速)