Nginx 如何限制访问频率,下载速率和并发连接数的方法
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,一、 限制访问频率、并发连接、下载速度用到的模块和指令概述ngx_http_limit_req_module :用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"ng
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
网络安全保障体系架构包括
软件开发财务报表分模板
网络安全罚款条例
岳阳网络安全学院要怎么学
东方国信数据库工程师
花都软件开发哪家不错
mpr数据库合并
云服务器怎么转让
网络安全硬件怎么挑选
我国首届国家网络安全宣传周主题
明日之后数据库
盛邦互联网科技有限公司
达梦数据库设置登录端口
电商系统软件开发哪家服务好
gbase数据库删除了怎么恢复
网络安全答题比赛是什么
网络安全创意作品设计
于细微之处抓网络安全
软件开发需求沟通工具
天津市网络安全工作会议
省监狱警察网络安全管理是省直吗
乙方网络安全宣贯
食材数据库
管理上网的服务器
fm2022国足数据库
软件开发需要什么配置的电脑
网络安全产品排版手帐
电视台网络安全宣传周小结
手机连接数据库文件
网络技术培训报告计算机