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

nginx 流量控制

流量限制 (rate-limiting),我们可以用来限制用户在给定时间内HTTP请求的数量。流量限制可以用作安全目的,比如可以减慢暴力密码破解的速率,更常见的情况是该功能被用来保护上游应用服务器不被同时太多用户请求所压垮。

1.nginx如何限流

Nginx的”流量限制”使用漏桶算法(leaky bucket algorithm),就好比,一个桶口在倒水,桶底在漏水的水桶。如果桶口倒水的速率大于桶底的漏水速率,桶里面的水将会溢出;同样,在请求处理方面,水代表来自客户端的请求,水桶代表根据”先进先出调度算法”(FIFO)等待被处理的请求队列,桶底漏出的水代表离开缓冲区被服务器处理的请求,桶口溢出的水代表被丢弃和不被处理的请求。

2.使用的模块
--ngx_http_limit_req_module模块     基于请求频率的限流

(基于连接数的限流ngx_http_limit_conn_module

“流量限制”配置两个主要的指令,limit_req_zonelimit_reqlimit_req_zone指令设置流量限制和内存区域的参数,但实际上并不限制请求速率。所以需要通过添加limit_req指令启用流量限制,应用在特定的location或者server块。(示例中,对于”/login/”的所有请求)。

limit_req_zone指令通常在HTTP块中定义,它需要以下三个参数:

-Key - 定义应用限制的请求特性。示例中的 Nginx 变量$binary_remote_addr,保存客户端IP地址的二进制形式。
-Zone - 定义用于存储每个IP地址状态以及被限制请求URL访问频率的内存区域。通过zone=keyword标识区域的名字(自定义),以及冒号后面跟区域大小。16000个IP地址的状态信息,大约需要1MB。
-Rate - 连接请求。在示例中,速率不能超过每秒1个请求。

3.实战1
机器一(代理机):
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; upstream myweb {server 10.0.105.196:80 weight=1 max_fails=1 fail_timeout=1;}server {listen 80;server_name localhost;

相关文章:

  • ubuntu22.04 卸载ESP-IDF
  • 20250519使用TF卡将NanoPi NEO core开发板刷机为Ubuntu core22.04.3系统完成之后执行poweroff自动关机
  • 实验-使用递归计算阶乘-RISC-V(计算机组成原理)
  • AM32电调学习解读九:ESC上电启动关闭全流程波形分析
  • linux服务器与时间服务器同步时间
  • CSS 选择器入门
  • python文件部署docker,容器路径与系统路径映射
  • DV SSL证书管理主要有哪些功能?
  • java20
  • python动漫论坛管理系统
  • JSX语法之TypeScript-02.1
  • Vue-样式绑定-style
  • Codeforces Round 1025 (Div. 2)(A-D)
  • C++:与7无关的数
  • 绿幕抠图与虚拟背景:直播美颜SDK开发前沿技术探索
  • 基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用|文献速递-深度学习医疗AI最新文献
  • 1.portainer
  • AGI大模型(28):LangChain提示模板
  • C++多态的详细讲解
  • CoT(Chain-of-Thought,思维链)推理
  • 著名古人类学家高星获推选为国际史前与原史研究院院士
  • 专访《风雪夜归人》导演闫锐:在舞台上表现什么是真正的活着
  • 海南医科大披露校内竞聘上岗结果:32名干部离开领导岗位,8人系落选
  • 女巫的继承者们
  • 纽约市长称墨西哥海军帆船撞桥事故已致2人死亡
  • 自强!助残!全国200个集体和260名个人受到表彰