Nginx 限速模块一览
为了保护服务器不被刷流量,或者业务方面的一些限制,需要做一些限速措施。
一、http 请求并发连接数模块:ngx_http_limit_conn_module
这个模块可以设置每个定义的变量(比如客户端ip)的并发连接数,比如:某个客户端ip在同一时间内的连接数不能超过某个值。
语法:
- 定义限制链接区域:
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http
- 设置连接数限制:
Syntax: limit_conn zone number;
Default: —
Context: http, server, location
示例:
# 根据客户端ip进行限制,区域名称为perip,总容量为10m
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
...
# 使用perip区域名称(zone name),同一时间并发数不得超过10
limit_conn perip 10;
limit_conn perserver 100;
}
二、tcp 请求并发连接数模块:ngx_stream_limit_conn_module(since 1.9.3)
这是自 nginx 1.9.3 提供的 TCP负载均衡的限制流连接数模块,用法等同于ngx_http_limit_conn_module。
三、http 请求限制模块:ngx_http_limit_req_module
这个模块用来限制每个被定义的变量(比如客户端ip)的访问速率,比如:通俗点来讲,每个ip可以每秒请求几次。
语法:
- 定义限速区:
Syntax: limit_req_zone key zone=name:size rate=rate;
Default: —
Context: http
- 设置限速:
Syntax: limit_req zone=name [burst=number] [nodelay];
Default: —
Context: http, server, location
示例:
#limit_req_zone 为定义一个限速区域,binary_remote_addr代表一个客户端ip,zone perip为区域名称,10m为总容量,rate=1r/s代表每秒只接受1个请求
limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
limit_req_zone $server_name zone=perserver:10m rate=10r/s;
server {
...
# 代表使用zone为preip的配置,设置的速率1个每秒,缓冲区5个请求,如果超过速率和缓存区大小,直接返回503异常码
limit_req zone=perip burst=5 nodelay;
# 使用persever的配置,10个请求每秒,缓冲区为10个请求,没有nodelay参数,则会将请求延迟处理
limit_req zone=perserver burst=10;
}
四、nginx http 核心模块:ngx_http_core_module
使用到了其中的limit_rate命令,可以限制响应速率比如:
limit_rate 1024K;
代表单词请求响应量最多为1024K。
参考链接
- http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
- http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
- http://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html
- http://nginx.org/en/docs/http/ngx_http_core_module.html
Nginx 限速模块一览的更多相关文章
- Nginx限速模块初探
Nginx限速模块分为哪几种?按请求速率限速的burst和nodelay参数是什么意思?漏桶算法和令牌桶算法究竟有什么不同?本文将带你一探究竟.我们会通过一些简单的示例展示Nginx限速模块是如何工作 ...
- [转帖]Nginx rewrite模块深入浅出详解
Nginx rewrite模块深入浅出详解 https://www.cnblogs.com/beyang/p/7832460.html rewrite模块(ngx_http_rewrite_modul ...
- nginx 限速最容易理解的说明
nginx 限速研究汇报 写在前面 这两天服务器带宽爆了,情况如下图: 出于降低带宽峰值的原因,我开始各种疯狂的研究nginx限速.下面是我研究过程中的心得!(花了好几个小时的时间写的人生第一篇技术类 ...
- Nginx (限速)限制并发、限制访问速率、限制流量
Nginx 限制并发访问速率流量,配置还是简单的,看下Nginx文档根据文中这三个模块对照看一下就可以,Nginx限速使用的是漏桶算法(感兴趣可以看下文末的参考资料),需要注意的是:当需要进行限速操作 ...
- 基于Nginx dyups模块的站点动态上下线并实现简单服务治理
简介 今天主要讨论一下,对于分布式服务,站点如何平滑的上下线问题. 分布式服务 在分布式服务下,我们会用nginx做负载均衡, 业务站点访问某服务站点的时候, 统一走nginx, 然后nginx根据一 ...
- Nginx 切片模块、断点续传
熟悉 CDN 行业主流技术的朋友应该都比较清楚,虽然 Nginx 近几年发展的如日中天,但是基本上没有直接使用它自带的 proxy_cache 模块来做缓存的,原因有很多,例如下面几个: 不支持多盘 ...
- nginx事件模块分析(一)
nginx ngx_events_module模块分析 ngx_events_module模块是核心模块之一,它是其它所有事件模块的代理模块.nginx在启动时只与events模块打交道,而由even ...
- mac下Nginx+lua模块编译安装
Nginx的nb之处就不说了,lua也是一个小巧的脚本语言,由标准C编写而成,几乎可以运行在所有的平台上,也非常强大,其他特性请自行度娘.nginx_lua_module是由淘宝的工程师清无(王晓哲) ...
- nginx添加模块 (非覆盖安装)
nginx添加模块(非覆盖安装) 原已经安装好的nginx,现在需要添加一个未被编译安装的模块: 查看原来编译时都带了哪些参数# /usr/local/nginx/sbin/nginx -V ngin ...
随机推荐
- 洛谷P1962 斐波那契数列 || P1349 广义斐波那契数列[矩阵乘法]
P1962 斐波那契数列 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数 ...
- 配置jpa
persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence ver ...
- LL(1)算法
编译原理的语法分析中一个入门的算法就是LL(1)算法了,这里做一个总结.首先比较重要的是FIRST集和FOLLOW集合的生成. 先上个例子吧: 首先说一下FIRST集的生成,这个就要看产生式右部对应的 ...
- JS中的“!!”
var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test); 由于对null与undefined用! ...
- MySql 存储过程、触发器和权限问题
存储过程 1.1 什么是存储过程 存储过程,带有逻辑的sql语句 之前的sql没有条件判断,没有循环 存储过程带上流程控制语句(if while) 1.2 存储过程特点 1)执行效率非常快!存储过程 ...
- Oracle日期格式转换,tochar(),todate()
Oracle日期格式转换 本文主要介绍Oracle中的日期转换. 1. 日期转化为字符串 (以2016年10月20日为例) select to_char(sysdate,'yyyy-mm-dd hh2 ...
- iOS证书问题
链接: 关于IOS免证书真机安装的过程和问题 苹果IOS开发者账号的区别,企业账号,个人账号,公司团队账号,教育账号 苹果IOS开发者账号总结--发布应用APP时team name是否可以随意写? P ...
- .gitignore详解
今天讲讲Git中非常重要的一个文件――.gitignore. https://git-scm.com/docs/gitignore 首先要强调一点,这个文件的完整文件名就是“.gitignore”,注 ...
- 【Python】[面向对象高级编程] 使用__slots__,使用@property
1.使用 __slots__ 给实例绑定方法, >>> def set_age(self, age): # 定义一个函数作为实例方法 ... self.age = age .. ...
- url 中 # ? & 的作用
1. # 10年9月,twitter改版.一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为http://twitter.com/username改版后,就变 ...