当前位置: 首页 > news >正文

Nginx限流配置

目录

  • 前言
  • 请求速率限制 limit_req_zone
    • 配置
    • 验证
  • 并发连接数 limit_conn_zone
    • $binary_remote_addr 客户端IP并发连接数
      • 配置
      • 验证
    • $server_name 并发连接数配置
  • 完整配置如下

前言

  • Nginx限流可以控制并发连接数请求速率,针对异常流量有一定作用,保护服务免受过多的请求影响。

请求速率限制 limit_req_zone

配置

  • http块配置
http {
..省略...
# key :定义限流对象,binary_remote_addr 是一种key,表示基于 客户端IP 来做限流
# zone:定义共享内存区来存储访问信息, one:10m 表示一个大小为10M
# rate 用于设置最大访问速率,rate=10r/s
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
..省略...
}
  • server块配置
server {
#burst 译为突发、爆发,表示在超过设定的处理速率后能额外处理的请求数
limit_req zone=one burst=10;
}

验证

  • 使用jmeter 1秒内发起21次请求
    在这里插入图片描述
  • 有1次请求失败,配置成功
    在这里插入图片描述

并发连接数 limit_conn_zone

$binary_remote_addr 客户端IP并发连接数

配置

  • http块配置
http {
limit_conn_zone $binary_remote_addr zone=perip:10m;
}
  • server块配置
server {#limit_conn perip 10 作用的key 是 $binary_remote_addr,表示限制单个IP同时最多能持有10个连接。limit_conn perip 10;
}

验证

  • 普通请求连接释放太快了,为了测试连接数配置,用Lua写了个接口功能,睡眠5秒模拟业务处理消耗时间。
# 模拟下载功能
location /download  {default_type 'text/html; charset=UTF-8';content_by_lua_block {ngx.sleep(5)  -- 休眠,模拟业务处理消耗时间ngx.say("download success")}}
  • 使用jmeter 1秒内发起21次请求
    在这里插入图片描述

在这里插入图片描述

  • 有11个请求失败,验证成功。
    在这里插入图片描述

$server_name 并发连接数配置

http {limit_conn_zone $server_name zone=perserver:10m;server {limit_conn perserver 10;}
}
  • 针对$server_name的并发连接数限制,与前面同理。

完整配置如下

http {limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;server {limit_req zone=one burst=10;limit_conn perip 10;limit_conn perserver 10;}}
http://www.dtcms.com/a/445904.html

相关文章:

  • 大岭山做网站九亭做网站公司
  • 微软宣布 Windows 11 v25H2 GA
  • Burp Suite模拟器抓包全攻略
  • 佛山营销型网站定制绿色企业网站源码
  • Qt 5.14.2+Mysql5.7 64位开发环境下无法连接数据库
  • 【Python】
  • [特殊字符]ui设计公司灵感备忘录 | 网格布局 UI 收集
  • Base UI:一款极简主义的「无样式」组件库
  • MySQL 运维知识点(十六)---- 读写分离
  • 网站建设生存期模型希音电商网站
  • 济南网站建设培训班永久免费网站建设
  • 高层次综合报告分析-vivado hls第四章
  • Go语言中的Zap日志库
  • Linux网络编程——UdpServer
  • Daily算法刷题【面试经典150题-3️⃣】
  • MybatisPlus和pagehelper分页冲突—关于jsqlparser、pagehelper、MybatisPlus三者的版本兼容问题
  • R 数组:深入解析与高效使用
  • 缩点学习笔记
  • Go基础:用Go语言操作MongoDB详解
  • 第六章:适配器模式 - 接口转换的艺术大师
  • ARM环境日志系统的简单设计思路
  • 网站名称推荐大气聚财的公司名字
  • 【JVM】——实战篇
  • 那里有正规网站开发培训学校个人网站是怎么样的
  • 高端网站设计简介推荐外贸网站建设的公司
  • asp.net 网站安装工商核名在哪个网站
  • 基于websocket的多用户网页五子棋(五)
  • 【图像处理基石】什么是全景视觉?
  • 【Linux】线程同步和生产者消费者模型
  • 《嵌入式驱动(三):字符设备驱动开发》