nginx限速

nginx 要实现限速,完整的实现是要限制客户端请求频率,并发连接和传输速度

1.请求限制

Nginx 请求限制的功能来自于 ngx_http_limit_req_module 模块。使用它需要首先在 http 配置段中定义限制的参照标准和状态缓存区大小。比如下面的配置就是定义了使用客户端的 IP 作为参照依据,并使用一个 10M 大小的状态缓存区。结尾的 rate=1r/s 表示针对每个 IP 的请求每秒只接受一次。

limit_req_zone $binary_remote_addr zone=NAME:10m rate=1r/s;

NAME 是自定义的缓存区名称,可以随意命名,比如 per_ip 或 one 等。在 server 配置段中会用到。10M 的状态缓存空间够不够用呢?官方给出的答案是 1M 的缓存空间可以在 32 位的系统中服务 3.2 万 IP 地址,在 64 位的系统中可以服务 1.6 万 IP 地址,所以需要自己看情况调整。如果状态缓存耗光,后面所有的请求都会收到 503(Service Temporarily Unavailable) 错误。

然后就可以在 server 段中配置具体的连接限制了。比如下面的配置:

server {
    location / {
        limit_req zone=NAME burst=5;
    }
}

后面的 burst=5 是一个宽容度配置。表示如果单个 IP 有每秒有超过 1 个请求限制的时候,最多接受多少个超出的配额。超出的请求会被加入到队列延迟处理。如果不想延迟,可以使用 nodelay 参数。示例如下:

 

server {
    location / {
        limit_req zone=NAME burst=5 nodelay;
    }
}

2.并发限制

Nginx 并发限制的功能来自于 ngx_http_limit_conn_module 模块。跟请求配置一样,使用它之前,需要先定义参照标准和状态缓存区。

limit_conn_zone $binary_remote_addr zone=NAME:10m;

然后同样在 server 段中配置具体的限速数据。比如针对下载目录,每个 IP 只允许一个连接:

server {
    location /download/ {
        limit_conn NAME 1;
    }
}

速度限制:

Nginx 除了限制请求和并发外,还可以使用 limit_rate 来限制传输速度。例如:

server {
    location / {
        limit_rate 100k;
    }
}

上面的配置意思表示每个连接的传输速度不能超过 100k。

参考文档:

http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate

 

 

转载于:https://www.cnblogs.com/mikeluwen/p/7092701.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值