如果很多用户同一时刻疯狂的下载nginx服务器上面的资源,这样势必会对nginx服务器的I/O产生极大负担,所以对nginx服务器的下载做限速设置很有必要。

    nginx的安装不再做说明,这里默认网站文件存放的位置是/usr/local/nginx/html/xiaowei_1,首先进入这个目录操作,虚拟出一个500M的文件做测试用:

    [root@nginx xiaowei_1]# dd if=/dev/zero of=myfile bs=1M count=500    ///产生一个500M大小的文件,作为测试用,这里的myfile是自定义的文件名。

    现在就对网站下载myfile这个文件,我是在另外一台linux上做的下载测试,也可以在window系统上做测试,效果是一样的,看下载速度:

wKiom1Pi5qPR9ogeAAHeRC8tIzs679.jpg

可见,下载的时间很快,平均下载速度为26.7M/s。

[root@nginx conf]# cat nginx.conf    ///配置nginx配置文件

user  nobody;

worker_processes  1;

error_log  logs/error.log;

pid        logs/nginx.pid;


events {

    worker_connections  1024;

    use epoll;

}


http {

    include       mime.types;

    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    

    include extra/virtualhost.conf;    ///这两行我做的都是引用要用到的模块配置文件,也可以把这些配置文件不独立出去直接放到http节点里面去,这行代码的意思是我做了虚拟主机配置文件,当然这行的配置和本次模拟限速设置没有关系。

    include extra/limitdown.conf;    ///这行的意思是我引用了限制下载速度的配置文件


}


    下面来看一下限制下载速度配置文件的内容(limitdown.conf):

[root@nginx extra]# cat limitdown.conf 

limit_zone mylimit $binary_remote_addr 10M;    ///mylimit为我对限制区域取的一个名字,可以任意设置,10M:我限制了下载总带宽为10M。

server {

    listen  80;    ///监听web服务器的80端口

    server_name10.10.16.29;    ///web服务器的域名,写成ip地址也可以

    

    location / {

root html/xiaowei_1;    ///web文件存放的目录,即在/usr/local/nginx/html/xiaowei_1目录下

index index.html index.php;    ///web服务器的索引文件

limit_rate 10k;    ///网站限速到10k,为了测试很明显就把此值调的很低

limit_rate_after 100M;    ///网站限速要在下载完100M以后才能生效,即用户在开始的下载100M之前,下载的总带宽最多可以飙到10M,下载速度可以飙到最大,但是一旦下载的大小超过了100M,下载速度就会慢慢降低,速度一直降到10K

limit_conn mylimit 1;    ///限制同一个ip同时只允许1个任务在下载,不允许2个以上的下载任务在下载,这也是为了测试更明显才调的1.

    }

}

[root@nginx sbin]# ./nginx -s reload

好的,到了这里可以在客户端上面再做一次测试,注意观察前100M的下载速度和后400M的下载速度。

wKioL1Pi68LjYUqSAAFjfSJN6GM059.jpg

    看呐,前100M的下载速度飙到了38M/s!

wKioL1Pi7HbgrU9QAAF97dI-2-k281.jpg

    但是,当下载量超过100M以后,下载速度就慢慢的降低,直到变成了10K左右,这表明配置文件配置的很对。

    现在再来测试一下同一ip可以被允许同时下载几个任务:

wKioL1Pi7VjTUEVHAAGuULw4qcU501.jpg

    由上图可以看到同一ip当打开另外一个下载任务时会报503的错误,也就是说同一ip不允许2个下载任务同时进行,但是同一时刻可以允许多个ip下载一个任务。用window浏览器测试效果也是一样的。这说明nginx的下载限速设置配置正确。


    到这里,nginx服务器的下载限速设置配置完成!