网站首页 > 精选教程 正文
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有一定的防御作用。
限带宽很容易明白,直接上例子
location /mp3 { limit_rate 200k; }
有一种方式可以让限速更加人性化,即传输一定流量后开始限速,
比如先全速传输1M,然后开始限速:
location /photo { limit_rate_after 1m; limit_rate 100k; }
接下来讲限并发数和请求数。
为什么有这两个模块呢?因为我们知道,一个页面通常有多个子模块,譬如5张图片,那么我们请求这个页面时发起了一个连接,但是这一个连接包含了5次图片请求,也就是说,一个连接可以发起多次请求。我们为了维持用户体验,是限制连接数还是请求数,要根据实际需要进行选择。
1、限制连接数
要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:
limit_conn_zone $binary_remote_addr zone=addr:5m;
这样就在内存中创建了一个5M大小,名为addr的限速池(每个连接占用32或64字节,5m大小可容纳数以万计的连接,通常是足够的,如果5M内存耗尽,将返回503)
接下来需要对server不同的位置(location段)进行限速,比如限制每个IP并发连接数为2,则
limit_conn addr 2;
2、限制请求数
要限制请求数,也必须先创建一个限速池,在http段加入如下代码:
limit_req_zone $binary_remote_addr zone=one:5m;
限速分为全局限速和局部限速,
对于全局限速,我们只需要在后面加上参数即可,比如每秒20个请求,rate=20r/s,即:
limit_req_zone $binary_remote_addr zone=perip:5m rate=20r/s;
有时候我们希望在location段调整一下链接,可以借助burst参数
limit_req zone=one burst=50;
如果不希望延时,还有nodelay参数
limit_req zone=one burst=50 nodelay;
以上是nginx的限速功能简介,不当之处,欢迎指正。至于具体使用哪种限速方法,一定要斟酌,以免破坏用户体验。
本文转载地址:http://blog.51cto.com/purplegrape/1228527
作者紫色葡萄的原创作品
猜你喜欢
- 2024-10-11 在 Docker 中部署 Nginx 并挂载配置文件
- 2024-10-11 Nginx 的请求处理流程,你了解吗?
- 2024-10-11 45、HTTP状态码 HTTP状态码404
- 2024-10-11 Nginx配置及应用场景之高级配置 nginx 基本配置
- 2024-10-11 为什么 NGINX 的 reload 命令不是热加载?
- 2024-10-11 网红面试题:从输入 url 到看到页面发生了什么
- 2024-10-11 被“某某网盘”限速网盘空间不够大?自己做一个网盘吧!
- 2024-10-11 你了解多少,关于Nginx 的请求处理流程
- 2024-10-11 一次限速,导致的线上故障 限速系统故障
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)