开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

nginx 限速

简介:
+关注继续查看

nginx 是个不错的web服务器,提供了全方位的限速功能,主要的功能模块是ngx_http_core_module、ngx_http_limit_conn_module和 ngx_http_limit_req_module,第一个模块中有limit_rate功能(限网速带宽),后两个模块从字面上讲,功能分别是限制连接(limit connection)和限制请求(limit request),这几个模块默认都编译进了nginx核心。


所有的限制都是针对IP的,因此对CC、DDOS有一定的防御作用。


限带宽很容易明白,直接上例子


1
2
3
location /mp3 {
    limit_rate 200k;
}


有一种方式可以让限速更加人性化,即传输一定流量后开始限速,


比如先全速传输1M,然后开始限速:


1
2
3
4
location /photo {
    limit_rate_after 1m;
    limit_rate  100k;
}


接下来讲限并发数和请求数。


为什么有这两个模块呢?因为我们知道,一个页面通常有多个子模块,譬如5张图片,那么我们请求这个页面时发起了一个连接,但是这一个连接包含了5次图片请求,也就是说,一个连接可以发起多次请求。我们为了维持用户体验,是限制连接数还是请求数,要根据实际需要进行选择。


1、限制连接数

要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:

1
limit_conn_zone $binary_remote_addr zone=addr:5m;

这样就在内存中创建了一个5M大小,名为addr的限速池(每个连接占用32或64字节,5m大小可容纳数以万计的连接,通常是足够的,如果5M内存耗尽,将返回503)


接下来需要对server不同的位置(location段)进行限速,比如限制每个IP并发连接数为2,则

1
limit_conn addr 2;



2、限制请求数

要限制请求数,也必须先创建一个限速池,在http段加入如下代码:

1
limit_req_zone $binary_remote_addr zone=one:5m;

限速分为全局限速和局部限速,


对于全局限速,我们只需要在后面加上参数即可,比如每秒20个请求,rate=20r/s,即:

1
limit_req_zone $binary_remote_addr zone=perip:5m rate=20r/s;


有时候我们希望在location段调整一下链接,可以借助burst参数

1
limit_req zone=one burst=50;


如果不希望延时,还有nodelay参数

1
limit_req zone=one burst=50 nodelay;


以上是nginx的限速功能简介,不当之处,欢迎指正。至于具体使用哪种限速方法,一定要斟酌,以免破坏用户体验。











本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1228527,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx实战(四) 限速功能
Nginx实战(四) 限速功能
0 0
使用 Nginx 作为阿里云对象存储OSS网关,给 OSS “限速”
对象存储 OSS 是经常被用于网盘存储的底层 PaaS 产品之一,但是在接触过程中很多的客户都表示使用对象存储 OSS 就怕流量控制不住,如果是企业网盘万一员工大量下载大容量文件就会导致添加流量账单。那么是否有办法给对象存储“限速”呢?
0 0
Nginx限速模块初探
Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟。我们会通过一些简单的示例展示Nginx限速模块是如何工作的,然后结合代码讲解其背后的算法和原理。
10049 0
QGS
(openEuler21.03-Centos7-x86)yum安装php+nginx—配置nginx解析php
记(openEuler21.03-Centos7-x86)yum安装php+nginx—配置nginx解析php
0 0
nginx禁止外网访问登录页面,SQL 注入、XSS 攻击配置
nginx禁止外网访问登录页面,SQL 注入、XSS 攻击配置
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Nginx 代理系统常用手册》
立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手
立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册
立即下载