趣玩Nginx——限速
最近用nginx搭建了资源共享网站,供公司内部下载使用。很头疼的一件事情是,经常会被监控告警I/O飙升,原因是大家同时下载资源的时候,由于网络没有限制,造成nginx服务器负载飙升。所以,作下载站使用的时候,一定要做限速,那么nginx如何做限速呢?
首先进入网站文件存放目录,我這里默认的/usr/local/nginx/html,在這里模拟一个500M的文件做测试用
查看文件大小
现在在另外一台系统上做下载测试,查看下载速度:
虚拟网卡下载速度最大10M,满跑。查看nginx配置
[root@lhw conf]# cat nginx.conf |grep -v "#"
接着我们添加限速配置,可以在location中配置,也可以在server中配置
limit_rate 200k; ///网站限速到10k/s,为了测试效果明显,此处把该值调的很低
limit_rate_after 100M; ///网站限速要在下载完100M以后才能生效,即用户的下载量在100M之内时,下载速度可以飙到最大,但是一旦下载的大小超过了100M,下载速度就会慢慢降低,一直降到10K/s
修改完成后,我们重载nginx,继续下载测试看看效果:
可以很明显的看到,下载速度从10M/s 降到200K/s 左右,完美限速。
下面设置限制 IP:
在http中定义一个zone,存储客户端地址,
limit_conn_zone $binary_remote_addr zone=addr:10m;
在location中设置限制并发数
limit_conn perip 1; ///限制同一个ip同时只允许1个任务在下载,为了测试效果 明显调整为1。设置完成后看一下效果:
第二个链接提示503,也就是说一个IP不允许2个任务同时进行,nginx下载限速完美实现。