ITPub博客

首页 > Linux操作系统 > Linux操作系统 > nginx限制流量

nginx限制流量

原创 Linux操作系统 作者:nginx_web 时间:2012-06-13 09:00:41 0 删除 编辑

 

 

对于提供下载的网站,肯定是要进行流量控制的,例如BBS、视频服务,还是其它专门提供下载的网站。在nginx中我们完全可以做到限流,由Core模块提供了limit_ratelimit_rate_after命令。

 

   

 

    通过以下两条命令来完成限制流量。

 

指令名称:limit_rate

    能:该指令用于指定向客户端传输数据的速度,速度的单位是每秒传输的字节数。需要明白的一点是该限制只是针对一个连接的设定,就是说如果同时有两个连接那么它的速度将会是该指令设置值的2倍,

 

如果需要在server级别对某些客户端限制速度,对于这种情况——这个指令可能并不适合,但是可设置$limit_rate变量,可以为该变量传递相应的值来实现,例如:

 

server {

  if ($slow) {

    set $limit_rate  4k;

  }

}

 

    当然也可以通过设置X-Accel-Limit-Rate(来自于NginxXSendfile模块)来控制由proxy_pass(来自于HttpProxyModule模块)返回的响应数据的速率,而没有使用X-Accel-Redirect头。

    : limit_rate speed

默 认 值: no

使用环境: http, server, location, if in location

 

    令:limit_rate_after

    能:limit_rate_after,这个命令中的“after”提示了我们,可以这样理解“在后再限制速率为”,没错,就是这个意思,它的语法为:limit_rate_after time(这是官方威客上http://wiki.nginx.org/HttpCoreModule#limit_rate的语法),它的意思是以最大的速度下载time时长后,但是在实际的使用中发现命令limit_rate_after的参数是一个下载字节量的大小值,而不是时间值,因此上面的命令“limit_rate_after 3m”解释为:以最大的速度下载3M后。

    法:limit_rate_after size

默 认 值:limit_rate_after 1m

使用字段:http, server, location, location中的if字段

 

实例配置

 

    看下面的配置,这是一个视频服务器上的配置片断,通过这两条命令限制了访问者的下载速度:

 

 

   location /download {

       limit_rate_after 3m;

       limit_rate 512k;

    }

 

   

我们看一下这两条命令:

 

 

    limit_rate,相对于limit_rate_after命令,这个命令已经开始限速了,它的语法为:limit_rate speed,它表示限制为的速率。该指令可以用在http, server, location以及location中的if区段,没有默认值。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27043155/viewspace-732626/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    52
  • 访问量
    417874