如果很多用户同一时刻疯狂的下载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系统上做测试,效果是一样的,看下载速度:
可见,下载的时间很快,平均下载速度为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的下载速度。
看呐,前100M的下载速度飙到了38M/s!
但是,当下载量超过100M以后,下载速度就慢慢的降低,直到变成了10K左右,这表明配置文件配置的很对。
现在再来测试一下同一ip可以被允许同时下载几个任务:
由上图可以看到同一ip当打开另外一个下载任务时会报503的错误,也就是说同一ip不允许2个下载任务同时进行,但是同一时刻可以允许多个ip下载一个任务。用window浏览器测试效果也是一样的。这说明nginx的下载限速设置配置正确。
到这里,nginx服务器的下载限速设置配置完成!
转载于:https://blog.51cto.com/4593973/1536786