妙博客

主机评测 香港服务器 洛杉矶VPS测评

nginx对含CDN的地址对真实IP限制速度限制

没有套CDN的情况下,可在nginx中如下配置

http {
  limit_zone one $binary_remote_addr 10m;
  server {
    location /files/ {
      limit_conn one 1;
      limit_rate_after 1000k;
      limit_rate 100k;
    }
  }
}

limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。

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

limit_rate_after 1000k,在下载1000k后开始限速。

limit_rate 100k,对每个连接限速100k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许三个并发连接,那么这个IP就是限速为limit_rate×3,在设置的时候要根据自己的需要做设置调整,要不然会达不到自己希望的目的。


如果你的nginx套了CDN,需要手动获取客户端真实IP,请用如下方式限制

http {
map $http_x_forwarded_for  $myip{
        ""      $remote_addr;
        ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;
}
  limit_zone one $myip 10m;
  server {
    location /files/ {
      limit_conn one 1;
      limit_rate_after 1000k;
      limit_rate 100k;
    }
  }
}


Copyright Your 142132.com Rights Reserved. 赣ICP备17010829号-2