nginx Nginx-limit-traffic-rate-module限制速度

默北 Nginx617,718字数 611阅读2分2秒阅读模式

在前面我们说到了《nginx限制连接数》、《nginx限制请求数》和《nginx nginx_limit_speed_module限制总带宽》。这里介绍下limit_traffic_rate模块如何根据给定的变量如$request_uri, $remote_addr等等来限制速度的。

项目地址:https://github.com/bigplum/Nginx-limit-traffic-rate-module文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-limit-traffic-rate-module-limit-speed/

ngx_http_limit_conn_module 模块下的指令limit_conn指定每个给定键值的最大同时连接数,limit_rate指令对每个连接的速率限制。参数rate的单位是字节/秒,设置为0将关闭限速。 按连接限速而不是按IP限制,因此如果某个客户端同时开启了两个连接,那么客户端的整体速率是这条指令设置值的2倍。如果是多线程的下载,limit_rate并不能限制总的速度。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-limit-traffic-rate-module-limit-speed/

Limit_traffic_rate模块提供了一种方法,通过客户端IP或下载URL来限制总的下载速度,即使有多个连接。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-limit-traffic-rate-module-limit-speed/

该限制方法如下所示:文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-limit-traffic-rate-module-limit-speed/

http {
        #limit_traffic_rate_zone   rate $request_uri 32m;
        limit_traffic_rate_zone   rate $remote_addr 32m;

        server {
            location /download/ {
                limit_traffic_rate  rate 20k;
            }
        }
    }
文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-limit-traffic-rate-module-limit-speed/文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-limit-traffic-rate-module-limit-speed/
weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 05/05/2014 01:00:13
  • 转载请务必保留本文链接:https://www.ttlsa.com/nginx/nginx-limit-traffic-rate-module-limit-speed/
  • nginx
  • Nginx-limit-traffic-rate-module
评论  6  访客  6
    • 老牛
      老牛 1

      难道区别是
      方式一
      我一次只能下载一个文件? 速度被控制在512K?
      方式二
      我一次可以下载多个文件,但是总的速度会被控制在512K?

      ADSL那个外网IP的问题一直没弄明白,我通过iftop查看,好像全部是经过了电信动态解析的域名,不是ip,nginx是怎么处理呢?

        • 默北
          默北

          @ 老牛 域名它也会对应一个或多个IP上的

        • 老牛
          老牛 1

          请教一下,通过你的这几篇文章,我有点儿糊涂
          方式一、limit_conn_zone 配合limit_rate来限制
          假设我设置:
          limit_conn addr 1; #根据官方说明,也是按ip来限制连接数
          limit_rate 512k; #每个连接数的下载速度为512k
          我试了试,这样可以防止迅雷等多线下载,速度也被控制在了512
          问题:多个用户共用一个外网IP,是否就不能同时下载了?,ADSL是不是多人共用一个外网IP呢,怎么解决?

          方式二、limit-traffic-rate-module,
          我没试,因为生产环境,不敢乱动,
          问题一:是否启用了这个模块就不用再使用方式一种的模块和配置?
          问题二:你说这个模块是通过ip来限制速度。。。那么以下问题怎么解决?
          假设一个宿舍的四个人,共享一条ADSL,出口IP是一样的,我设置限制ip下载速度为512K
          如果按IP限制下载速度,是否4个人同时下载时,该IP的下载速度为除以4,即为每个人128K/s,如果只有一个人下载即为512K/s? ADSL好像是很多个人共用一个外网ip,那这速度。。。岂不是不忍直视?

          两种方式都面临共用外网IP的情况,怎么解决呢? 而且两种方式好像用下来效果是一样的啊。。。

            • 默北
              默北

              @ 老牛 1. 可以同时下载,但是速度在512以下。 ADSL是多人共用一个动态的外网IP啊
              2.
              你是要解决什么问题啊? 我都不明白

                • xiaob
                  xiaob 9

                  @ 默北 我也是遇到这样的问题,nginx反向代理的时候就是同一个IP,不知道该用什么限速策略。怎么感觉Nginx-limit-traffic-rate-module和Nginx-limit-speed-module 功能一样呢?啊

                • xiaob
                  xiaob 9

                  @ 老牛 我也是遇到这样的问题,nginx反向代理的时候就是同一个IP,不知道该用什么限速策略。怎么感觉Nginx-limit-traffic-rate-module和Nginx-limit-speed-module 功能一样呢?

              评论已关闭!