千家信息网

Nginx 如何限制访问频率,下载速率和并发连接数的方法

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、 限制访问频率、并发连接、下载速度用到的模块和指令概述ngx_http_limit_req_module :用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"ng
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 疫情对互联网科技公司影响 金融科技还是互联网 麻工互联网科技 金融科技与互联网金融 奇酷互联网科技 艾特科技互联网 互联网高科技股票 互联网科技股午盘股票涨跌 新华互联网科技校企合作 顺网科技2021年互联网排名 湖南洣水互联网科技有限公司扣款 深圳市运趣互联网科技有限公司 顶级互联网科技成果有哪些 来此购互联网科技有限公司 高科技互联网发展前景如何 合肥互联网科技公司公章图片 深圳无忧互联网科技 云鲸互联网络科技有限公司 如何强化互联网金融科技 互联网最新的科技 有木互联网科技 互联网科技人工智能实验室 用友工业互联网科技发展 南博望互联网科技有限公司 互联网时代的科技公司 普陀区互联网教育科技管理办法 科技和互联网行业的特点 广东猫王互联网科技有限公司电话 小牛互联网科技有限公司地址
0