讲师中心 微信公众号
AI工具推荐 视频效率加速

如何通过 limit_req 模块保护后端服务器免受代理流量的突发冲击

秋涛同学_6722

秋涛同学_6722

发布时间:2026-05-22 13:19:46

|

909人浏览过

|

来源于php中文网

原创

在Nginx负载均衡层启用limit_req是应对代理流量突发冲击最有效方式,需按代理特征设计key、分级配置burst/nodelay、闭环监控并补足连接层防护。

如何通过 limit_req 模块保护后端服务器免受代理流量的突发冲击

直接在 Nginx 负载均衡层启用 limit_req,是应对代理流量突发冲击最有效的方式。它不依赖后端、无额外延迟,把限流逻辑压到流量入口,让恶意或误配的代理请求在触达应用前就被识别和控制。

按代理特征设计限流 key,避免被绕过

普通 IP 限流对使用代理池、IP 轮换的流量效果有限。需结合可透传的代理标识做更精准识别:

  • 若代理层透传真实用户标识(如 X-Real-User-ID 或 X-Forwarded-For 中可信段),用 $http_x_real_user_id 或提取后的可信 IP 作为 key,比单纯用 $binary_remote_addr 更可靠
  • 对已知代理网段(如某 CDN 或爬虫服务商 IP 段),可用 geo 指令标记,再配合 map 构造特殊 key,例如:
    map $geo_proxy $limit_key { default $binary_remote_addr; 1 "$binary_remote_addr:proxy"; },然后基于 $limit_key 定义 zone
  • 组合维度更稳妥:用 "$limit_key$request_uri" 区分不同接口路径,防止一个代理刷多个接口耗尽单个 key 配额

burst 与 nodelay 必须按代理行为分级配置

代理流量常表现为高频率、低延迟、无感知重试——这决定了 burst 不能设大,nodelay 不能乱开:

  • 对疑似扫描类代理(如高频访问 /robots.txt、/api/health):设 burst=0 或 burst=1 + nodelay,超速即拒,不给排队机会
  • 对业务型代理(如前端统一网关、第三方调用方):允许短时缓冲,burst = rate × 1~1.5 秒,例如 rate=20r/s → burst=30,但必须关闭 nodelay,让超量请求排队而非瞬间压向后端
  • 禁止在全局 location / 上统一加 nodelay,否则健康检查、静态资源等低风险路径也会触发激进拒绝,反而干扰运维判断

必须闭环:日志、状态码、内存监控缺一不可

没有可观测性的限流等于没开。代理流量往往隐蔽,靠默认日志很难定位问题源头:

  • 在 log_format 中强制加入 $limit(触发的 zone 名)和 $limit_key(实际统计值),例如:
    '$remote_addr $http_x_forwarded_for - [$time_local] "$request" $status $limit "$limit_key"'
  • 用 limit_req_status 429 将拒绝响应码从默认 503 改为标准 429 Too Many Requests,方便代理方识别并退避,也利于前端埋点统计
  • 定期检查共享内存 zone 使用率:nginx -T 2>/dev/null | grep "zone=" 查 size,确认是否足够——1MB ≈ 1.6 万个 key;若代理 IP 日活 20 万,zone 至少配 12MB,否则旧记录被挤掉,限流失效

补足连接层防护,防慢速代理耗尽资源

仅控请求速率不够。代理可能建大量长连接却不发数据(Slowloris 类攻击),或复用连接高频发请求:

  • 叠加 limit_conn:用 limit_conn_zone $binary_remote_addr zone=conn_perip:10m,再在关键 location 加 limit_conn conn_perip 50,限制单 IP 并发连接数
  • 调小 keepalive_timeout(如设为 15s),缩短空闲连接生命周期,降低连接堆积风险
  • 对明确为代理的请求头(如 User-Agent: *bot* 或含 X-Forwarded-For 多级 IP),可结合 if + return 403 做前置拦截(注意:仅用于简单过滤,不替代限流)

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2583

2023.08.11

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6610

2024.03.19

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

6026

2024.03.19

服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

457

2023.08.15

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

940

2023.09.08

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

3072

2023.09.19

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

1016

2023.10.09

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

909

2023.10.17

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
LLVM官方文档
LLVM官方文档

共0课时 | 0人学习

Memcheck使用手册
Memcheck使用手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn