nginx全局流量限速需明确限速对象,最常用的是通过http块中limit_rate配置全局限制响应带宽,如limit_rate 512k;可搭配limit_rate_after实现首段免限速;也可用location按路径或后缀精准限速,或用map指令实现动态速率策略。

实现 Nginx 全局流量限速,核心是明确“限什么”——是限制请求频次、并发连接数,还是响应数据传输速度。三者机制不同,不能混用,也不存在一个“万能全局开关”。最贴近日常需求的“全局限速”,通常指对所有下载类响应统一控制带宽,即 limit_rate 的全局配置。
直接在 http 块设默认限速
这是最简单、真正作用于全局的方式:在 /etc/nginx/nginx.conf 的 http { } 区域内添加:
-
limit_rate 512k;—— 所有响应(含 HTML、JS、图片、大文件)都按 512KB/s 发送 - 单位支持
k(KB/s)、m(MB/s),如1m表示 1MB/s - 注意:它对每个 TCP 连接单独生效,不是整机总带宽限制
推荐搭配 limit_rate_after 实现智能全局限速
避免小资源(图标、CSS)也被拖慢,应跳过初始部分再限速:
-
limit_rate_after 1m;—— 前 1MB 数据不限速,快速加载首屏或文件头 -
limit_rate 256k;—— 超出后稳定以 256KB/s 推送 - 两个指令必须同时出现在同一作用域(
http、server或location) - 适用于 ZIP、MP4、PDF 等大文件,兼顾体验与带宽保护
按路径或后缀做准全局限速(更安全)
若只想约束下载行为,不干扰其他服务,用 location 精准匹配:
- 针对固定目录:
location ^~ /download/ { limit_rate 1m; } - 针对文件类型:
location ~ \.(zip|pdf|mp4|iso)$ { limit_rate 512k; } -
^~提升前缀匹配优先级,比正则更高效;确保mime.types已引入
用 map 实现动态全局策略(进阶)
需要差异化控制时(如参数指定速率、Referer 白名单),可在 http 块中定义映射:
- 先声明变量:
map $arg_speed $rate { default "256k"; "fast" "2m"; "slow" "128k"; } - 再在 location 中引用:
limit_rate $rate; - 访问
/file.zip?speed=fast即走 2MB/s,未带参则用默认值 - 也可基于
$http_referer或$remote_addr做条件判断,但需注意合规边界











