网站首页 > 技术教程 正文
在PreAccess这个阶段主要有2个模块。
一、limit_conn:限制并发连接数。这个模块默认是编译进Nginx中的,可以通过--without-http_limit_conn_limit_module来禁用。
生效阶段:是在NGX_HTTP_PREACCESS_PHASE阶段。
生效范围:全部的worker进程,因为它使用了共享内存。所有zone指令都是在分配共享内存。
进入preaccess阶段前是不生效的,也就是说之前说的rewrite,find_config阶段 limit_conn模块是不会生效的。
限制连接的有效性,取决于key的设计。比如我们如果是限制客户端的并发连接数,而我们的Nginx之前如果有slb,这个时候 我们要用postread阶段的realip模块获取到真实ip。根据真实ip再来做并发连接限制。
语法:
// 定义共享内存
limit_conn_zone $key zone=$name:$size;
// key:关键字
// name:共享内存的名字
// size:共享内存的大小
limit_conn $zone $number;
// zone:上面定义的name
// number:并发连接数
二、limit_req:限制并发请求数,默认也是编译进nginx的。
生效阶段:是在NGX_HTTP_PREACCESS_PHASE阶段。
生效算法:leaky bucket算法。
生效范围:全部的worker进程,也是基于共享内存设计的。
语法
limit_req_zone $key zone=$name rate=$rate
// key:关键字
// name:共享内存的名字
// size:共享内存的大小
// rate:速率
limit_req zone=$name [burst=$number] [nodelay]
name:上面共享内存定义的名字
number:就是缓冲区里可容纳的请求数量
nodelay:在缓冲区里的指令也返回错误
leaky bucket算法:主要就是中间有个容器,可以控制一定的请求数量,以3M/s匀速给到Nginx。如果超过则会留在容器中,如果超过容器的容量,则会返回错误。
举个例子:
// 声明 限制连接的 共享内存 addr 大小为10m
limit_conn_zone $binary_remote_addr zone=addr:10m;
// 声明 限制请求的 共享内存 one 大小为10m
limit_req_zone $binary_remote_addr zone=one:10m rate=2r/m;
location /{
limit_conn_status 500;
limit_conn_log_level warn;
limit_rate 50;
limit_conn addr 1;
limit_req zone=one;
}
我们来考虑个问题:
limit_req与limit_conn配置同时生效,哪个有效?
limit_req在limit_conn之前,如果先触发了limit_req那么limit_conn就没有机会执行了。
猜你喜欢
- 2024-10-12 打造自动化DOS攻击防御系统:一键屏蔽恶意IP
- 2024-10-12 禁止使用搜索引擎怎么设置(30秒教会你5个小技巧)
- 2024-10-12 apache(nginx)下控制请求频率防IP恶意请求 「二版」
- 2024-10-12 限制IP某个时间段内访问的次数(限制ip怎么解决)
- 2024-10-12 怎么封攻击的IP地址(ip封禁是最简单和有效的防守方式)
- 2024-10-12 Nginx配置限流(nginx 限制流量)
- 2024-10-12 利用openresty+lua+redis 实现封杀频繁恶意访问IP地址
- 2024-10-12 如何用 Nginx 代理 MySQL 连接,并限制可访问 IP?
- 2024-10-12 企业网站维护教程:网站如何禁止国外IP访问?
- 2024-10-12 Linux下WEB中间件禁止IP访问配置方法
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)