web日志之nginx限制连接数&限速

好记性不如烂笔头,学到的东西还是写下来记得牢,忘记了也好再查找.
今天学到如何在nginx中限制单一IP的连接数和连接速度,这个在攻击和防迅雷还是挺有用的,记下!

限速使用 limit_zone, limit_conn 以及 limit_rate 进行配置
首先在 http 段配置一个 limit_zone,
然后在需要的地方使用 limit_conn 和 limit_rate 进行限速设置,
如下一个简单的例子:
对/files/ 目录,设置同一IP允许最多2个并发连接,每个连接限速20K(160kbps)


  1. http {   

  2. limit_zone one $binary_remote_addr 10m;   

  3. server {   

  4. location /files/ {   

  5. limit_conn one 2;   

  6. limit_rate 20k;   

  7. }   

  8. }   

  9. }   

说明:
limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。
$binary_remote_addr 就是客户端的IP了。直接这样写就行了。

limit_conn one 2;
限制在one中记录状态的每个IP只能发起2个并发连接。

limit_rate 20k;
对每个连接限速20k.
注意,这里是对连接限速,而不是对IP限速。
在这个例子里面,一个IP允许2个并发连接,
那么这个IP就是限速为limit_rate×2为40K
就是说,如果用户单线程下载,最大速度就是20K,
多线程下载,最大速度就是40K。
开三线程的话,最后一个线程会得到503的提示。
这里的K是KB。 Byte.

以上内容大部分为转载,原地址 http://www.zhaokunyao.com/archives/630

web日志之nginx限制连接数&限速》有6个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注