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

nginx请求限制、并发限制、限速详解

请求限制

用于限制每一个定义的密钥的请求的处理速率,特别是从一个单一的IP地址的请求的处理速率。限制是使用“泄漏桶”方法完成的

请求数频率限制:限制某个客户端在单位时间内同时访问的Http请求数,由ngx_http_limit_req_module实现。

实测配置:
http标签段定义请求限制, rate限制速率,限制一秒钟最多一个IP请求

cat conf.d/mulu.conf 
limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
# $binary_remote_addr    基于客户端 IP 进行限制(二进制格式,节省内存)
# zone=req_one:10m    定义共享内存区名称为 req_one,分配 10MB 空间
# rate=1r/s    限制每个 IP 每秒最多 1 个请求server {listen       80;server_name  www.jingxiang.com;location / {root /usr/share/nginx/html/jingxiang;index  index.html index.htm;}location /centos/ {root /usr/share/nginx/html/jingxiang;allow 10.0.0.0/24;deny all;charset utf-8;      autoindex on;      autoindex_exact_size off;autoindex_localtime on;limit_req zone=req_one burst=5 nodelay;   #burst=5:允许瞬时超 5 个请求(缓解突发流量)。#nodelay:立即处理突发请求,不延迟。}
}

burst与nodelay

通过设置burst参数,可以允许Nginx缓存处理一定程度的突发,多余的请求可以先放到队列里,慢慢处理,这起到了平滑流量的作用。但是如果队列设置的比较大,请求排队的时间就会比较长,这对用户很不友好。

有什么解决办法呢?nodelay参数允许请求在排队的时候就立即被处理,也就是说只要请求能够进入burst队列,就会立即被后台worker处理,请注意,这意味着burst设置了nodelay时,系统瞬间的QPS可能会超过rate设置的阈值。

nodelay参数要跟burst一起使用才有作用。

并发连接限制(limit_conn)

并发连接频率限制:限制同一时间的并发数,使用ngx_http_limit_conn_module实现。

http {limit_conn_zone $binary_remote_addr zone=addr:10m;# $binary_remote_addr  基于客户端IP限制,使用二进制格式存储,比字符串节省内存# zone=addr:10m  定义共享内存区,名为addr,分配10MB空间server {location /download/ {limit_conn addr 1;#限制每个客户端IP并发连接为1}} 
}

下载速度限制(limit_rate)

下载限速:限制客户端下载资源的速度,使用ngx_http_core_module实现

location /flv/ {flv;limit_rate_after 500k;   # 指定了在传输了多少数据之后开始应用 limit_rate 限制limit_rate       50k;    # 限制了单个连接的最大下载速率(50KB/s)
}
http://www.sczhlp.com/news/11897/

相关文章:

  • frp内网穿透(liunx对liunx) - try
  • python 阉割的matplotlib让它折线图显示出来中文
  • lyms_Hz17逆天语录
  • Elasticsearch拼音分词器使用指南
  • 8月14日随笔
  • 转载好文
  • MySQL介绍
  • 2025杭电多校8 1012(古怪dp)
  • 如何辨别人工智能AI何时对你撒谎
  • 5.14
  • 发现一款比较好用的抓包工具--Reqable
  • 网站集合 - 与光同尘
  • 决策树鸢尾花数据集分类
  • stm32f407zet6和stm32f407zgt6的区别
  • 如何正确使用SetThreadExecutionState来阻止Windows进入睡眠
  • Docker 构建rust编译环境
  • OCI编程高级篇(十二) 直接路径装载概念和步骤
  • OCI编程高级篇(十) 如何更简单的获取LOB定位符
  • 场景——JVM
  • CF2127游记
  • OCI编程高级篇(十一) 其他一些LOB操作函数
  • nanobind_沟通Python调用C++编写的库
  • 计算机视觉构建地球数字孪生体
  • OCI编程高级篇(八) LOB写操作
  • OCI编程高级篇(九) LOB读操作
  • 配置nginx目录游览功能
  • 博客园众包:再次诚征3D影像景深延拓实时处理方案(预算8
  • 爬虫-Day1
  • HTML
  • CSS3