Nginx 如何限制访问频率,下载速率和并发连接数的方法
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,一、 限制访问频率、并发连接、下载速度用到的模块和指令概述ngx_http_limit_req_module :用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"ng
千家信息网最后更新 2025年01月26日Nginx 如何限制访问频率,下载速率和并发连接数的方法
一、 限制访问频率、并发连接、下载速度用到的模块和指令概述
- ngx_http_limit_req_module :用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"
- ngx_http_limit_conn_module :用来限制同一时间连接数,即并发限制
- limit_rate和limit_rate_after :下载速度设置
漏桶算法(leaky bucket)
算法思想是:
- 水(请求)从上方倒入水桶,从水桶下方流出(被处理)
- 来不及流出的水存在水桶中(缓冲),以固定速率流出;
- 水桶满后水溢出(丢弃)。
- 这个算法的核心是:缓存请求、匀速处理、多余的请求直接丢弃。
- Nginx按请求速率限速模块使用的是漏桶算法,即能够强行保证请求的实时处理速度不会超过设置的阈值
二、限制URL访问请求频率
http{ ... limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s; limit_req_zone $binary_remote_addr $uri zone=two:30m rate=20r/s; limit_req_zone $binary_remote_addr $request_uri zone=three:30m rate=20r/s; limit_req_status 444; ... server{ ... limit_req zone=two burst=15 nodelay; ... } }
解释:
limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s;
- $binary_remote_addr 是限制同一客户端ip地址不同URL
- zone:区域名one 存放session30M
- rate: 每秒钟请求数
limit_req_zone $binary_remote_addr $uri zone=two:30m rate=20r/s;
- $binary_remote_addr $uri 是限制同一客户端ip地址 相同URL
- zone:区域名two 存放session30M
- rate: 每秒钟请求数
limit_req_zone $binary_remote_addr $request_uri zone=three:30m rate=20r/s;
- $binary_remote_addr $request_uri 是限制同一客户端ip地址 相同URL
- zone:区域名two 存放session30M
- rate: 每秒钟请求数
limit_req zone=two burst=15 nodelay;
- zone引用 区域为two,
- burst 设置一个大小为15的缓冲区,当有大量请求(爆发)过来时,访问超过了上面的限制可以先放到缓冲区内。
- nodelay 一般是和burst一起使用的,如果设置了nodelay,当访问超过了频次而且缓冲区也满的情况下会直接返回503,如果设置了,则所有大的请求会等待排队
三、并发连接数限制
案例一:
http { ... limit_conn_log_level error; limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn_status 503; ... server { ... location /download/ { limit_conn addr 1; 单个客户端IP限制为1 } ... }
案例二:
http{ limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { ... limit_conn perip 10; #单个客户端ip与服务器的连接数 limit_conn perserver 100; #限制与服务器的总连接数 } }
四、限制下载速度
location /download { limit_rate 128k; } #如果想设置用户下载文件的前10m大小时不限速,大于10m后再以128kb/s限速可以增加以下配内容 location /download { limit_rate_after 10m; limit_rate 128k; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
限制
客户
客户端
算法
水桶
速度
缓冲
速率
地址
域名
缓冲区
限速
处理
频率
相同
内容
单个
大小
时间
服务器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
品质网络技术销售价格
软件开发中 程序流程图
怎么启动本地数据库
维护网络安全是公民的权利吗
华为6g网络技术什么时候上市
墨小密南京网络技术公司职友集
服务器ban物品
软件开发项目组名
北京集叶资料软件开发公司
C服务器盘店
深圳麦库互联网科技有限公司
上海凯欣互联网科技
浪潮32路 服务器
dell服务器420
黑龙江软件开发报价机构
宣布国家网络安全宣传周启动
ispt网上数据库
青云服务器认证安全吗
sql数据库更改数据依赖关系
连云港鼎迈网络技术有限公司
云计算网络技术面试
美国巴大网络安全研究生
茂名点餐系统软件开发
常用服务器
服务器硬盘安装不上
王忠良加拿大软件开发
四川云网网络技术有限公司
360安全客 网络安全法
本科网络安全毕业设计题目
天猫精灵云服务器