最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 中如何进行静态资源访问速率配置
时间:2026-08-20 12:21:49 编辑:袖梨 来源:一聚教程网
Nginx静态资源访问速率配置通过limit_req限流、limit_conn连接数限制、按资源类型差异化配置及日志监控实现稳定防护;具体包括定义限流区域、设置rate/burst/nodelay参数、每IP并发连接上限、分扩展名设定不同速率,并将拒绝状态码改为429便于前端处理。
在 Nginx 中,静态资源访问速率配置主要指限制客户端对静态文件(如图片、CSS、JS)的请求频率,防止突发流量冲击服务器或被恶意刷取。这不是单纯靠缓存或压缩实现的“加速”,而是通过限流机制保障服务稳定性和公平性。
使用 limit_req 控制每秒请求数
这是最常用、最直接的方式,适用于防止爬虫高频抓图、脚本批量下载等场景。
- 在 http 块中定义限流区域,按客户端 IP 统计:
limit_req_zone $binary_remote_addr zone=static_rate:10m rate=5r/s;
- 在对应静态资源的 location 块中启用该限制:
location ~* .(jpg|jpeg|png|gif|css|js)$ {
limit_req zone=static_rate burst=10 nodelay;
}
说明:
• rate=5r/s 表示平均允许每秒 5 个请求;
• burst=10 允许最多 10 个请求暂存(排队),超出则拒绝(返回 503);
• nodelay 表示不延迟执行,超限立即拒绝,适合防攻击;去掉则按漏桶平滑处理。
结合连接数限制更稳妥
仅限请求频次还不够,高并发下大量短连接仍可能耗尽资源。建议叠加连接数控制:
- 定义连接限制区域(需放在 http 块):
limit_conn_zone $binary_remote_addr zone=conn_perip:10m;
- 在静态 location 中应用:
limit_conn conn_perip 16;
这表示每个 IP 最多维持 16 个并发 TCP 连接,能有效抑制多线程下载工具或恶意连接复用。
区分资源类型设置不同速率
不是所有静态资源都该一视同仁。例如图标(.ico)可设更高频次,大图(.jpg/.png)应更严格:
- 为不同扩展名分别定义限流区域:
limit_req_zone $binary_remote_addr zone=img_rate:10m rate=2r/s;
limit_req_zone $binary_remote_addr zone=asset_rate:10m rate=10r/s;
- 再分别匹配:
location ~* .(jpg|jpeg|png|webp|gif)$ {
limit_req zone=img_rate burst=5 nodelay;
}
location ~* .(css|js|woff2|svg)$ {
limit_req zone=asset_rate burst=20;
}
配合日志与监控判断效果
限流生效后,Nginx 默认会记录被拒绝的请求(日志中出现 limiting requests 或状态码 503)。建议:
- 在 location 块中添加自定义日志标记,便于识别限流行为:
limit_req_log_level warn;
limit_req_status 429;
将拒绝状态码改为 429 Too Many Requests,更符合语义,也方便前端做重试逻辑;warn 级别日志便于排查误伤正常用户。
相关文章
- 三国志战略版守望相助适合谁 三国志战略版守望相助值得兑换吗 08-20
- 原神新手如何开荒 08-20
- 洛克王国世界迷迷箱怪命定花种怎么打 迷迷箱怪命定花种打法详细说明 08-20
- 洛克王国世界千棘盔命定花种怎么打 千棘盔命定花种打法详细说明 08-20
- 洛克王国世界海豹船长命定花种怎么打 海豹船长命定花种打法详细说明 08-20
- 今古群侠传鹰喙获得方式 鹰喙如何获取 08-20