查看原文
其他

趣玩Nginx——限速

小李 运维研习社 2022-11-05

        

        最近用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下载限速完美实现。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存