Nginx下载限速

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx下载限速相关的知识,希望对你有一定的参考价值。

nginx可以通过HTTPLimitZoneModule和HTTPCoreModule两个模块来实现对目录和IP进行下载限速。

先来一个配置示例看下:


limit_zone one $binary_remote_addr 10m;
server 
{ 
listen       80;
server_name  test.361way.com;

location / {
root   /var/www/html;
index  index.html index.htm index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
limit_conn one 2;
limit_rate 10k;
}
}

该配置中分了两部分。

上面一部分用到了模块HTTPLimitZoneModule的用法。上面的配置中定义了一个名字为one大小为10M的容器,用于存储每个IP的session状态。该容器的大小要求大于等于32K,即每个session的大小为大于等于32k。按本例中10M大小来算,可以处理320000个session 。配置完该容器后,HTTPLimitZoneModule模块下还有另外一个参数limit_conn,配合limit_zone参数使用。如本例中,指定了one容器中,限制每个IP只能发起来两个连接。HTTPLimitZoneModule模块的详细用法可以参看其官方wiki页面。本示例中的配置是只针对根目录的。如果要对其他目录设置,改为其应的location /path 即可。

下面接着看第二部分,即HTTPCoreModule模块部分。该模块所该的参数比较多。但对于速度方面的限制主要为limit_rate参数。该参数用于限制每个连接的速度大小。本例中限制每个连接的最大下限速度为10k/s 。不过本例中对于每个IP的下载速度的峰值是多大呢?

很简间,单个IP的最大连接为2,每个连接的最大速度为10k,每个IP的最大速度即为:10k * 2 = 20k/s 。HTTPCoreModule模块的其他用法,也可以参看该模块的官方wiki 


总结:

Nginx以按默认方式编译安装的话自动会带以上两个模块的,不像apache需要通过编译时指定或动态加载第三方模块。从配置上来看,nginx的配置比较比较简洁,但功能上不如apache的mod_bw模块丰富。


以上是关于Nginx下载限速的主要内容,如果未能解决你的问题,请参考以下文章

nginx 限速不生效解决

nginx中基于jsessionid的限速策略

网盘下载限速,使用pandownload

nginx之旅(第四篇):nginx限速原理nginx限速场景nginx限速实现

Nginx 限制访问速率

php 文件限速下载代码