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

Linux 中怎么在 Apache 中为内部 API 接口配置访问频率限制

陌雪小哥_6677

陌雪小哥_6677

发布时间:2026-08-09 09:48:38

|

167人浏览过

|

来源于php中文网

原创

Apache原生不支持QPS级限流,需组合mod_qos(路径级粗粒度)、mod_security(IP+路径细粒度)、连接层防护及日志监控实现全链路限流。

linux 中怎么在 apache 中为内部 api 接口配置访问频率限制

Apache 本身不提供开箱即用的“每秒请求数(QPS)”级接口限流能力,尤其对内部 API 接口做精准频控时,原生模块能力有限。真正有效的方案是组合使用轻量、可靠、已在生产验证过的第三方模块,并聚焦在真实消耗资源的环节——不是数请求,而是管连接、控入口、筛路径。


H3:优先用 mod_qos 做路径级粗粒度限流(推荐起步)

mod_qos 是目前 Apache 生态中对 API 接口限流最实用的模块,支持按 Location + Host 匹配,能返回标准 429 状态码,且无需重写业务逻辑。

确保已加载模块:

LoadModule qos_module modules/mod_qos.so

在对应虚拟主机或全局配置中加入:

<IfModule qos_module>
  # 全局基础防护
  QS_SrvMaxConnPerIP 15
  QS_SrvMaxConn 300

  # 针对内部 API 路径(如 /api/internal/)
  <Location "/api/internal/">
    QS_LocRequestLimit 20        # 每秒最多 20 个请求进入该路径
    QS_LocRequestLimitAction 429 # 触发时返回 429 Too Many Requests
  </Location>
</IfModule>

✅ 优势:生效快、规则清晰、状态码规范
⚠️ 注意:计数精度为秒级,无滑动窗口;不区分 method 或 query 参数;需确认 mod_qos 版本 ≥ 11.68 才支持 QS_LocRequestLimitAction


H3:用 mod_security 实现 IP+路径组合的轻量计数(适合登录/提交类接口)

对 /api/internal/login 或 /api/internal/submit 这类高敏感接口,可借助 mod_security 的变量计数能力,实现更细粒度控制:

<IfModule security2_module>
  SecRuleEngine On
  SecRequestBodyAccess Off  # 不解析请求体,降低开销

  # 对登录接口:IP + User-Agent 组合计数(防工具枚举)
  SecRule REQUEST_HEADERS:Host "@streq internal.example.com" \
    "id:1001,phase:1,pass,setvar:ip.login_count=+1,expirevar:ip.login_count=60"

  SecRule ip:login_count "@gt 5" \
    "id:1002,phase:1,deny,status:429,msg:'Too many login attempts'"

  # 可选:排除健康检查路径
  SecRule REQUEST_URI "@streq /health" "id:1003,phase:1,allow,nolog"
</IfModule>

✅ 优势:支持自定义 key(如 IP+UA)、可设 TTL、拦截阶段早、不渲染页面
⚠️ 注意:需启用 SecResponseBodyAccess Off 避免响应体解析开销;规则写在 <virtualhost></virtualhost> 内更安全


H3:配合内核与连接层防护,堵住绕过漏洞

限流若只做在 HTTP 层,攻击者可能用慢速连接(Slowloris)或 TCP 半连接耗尽资源。必须同步加固底层:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 控制每个 IP 并发连接数(防连接打满):

    <IfModule limitipconn_module>
      MaxConnectionsPerIP 5
    </IfModule>
  • 调整系统内核参数(写入 /etc/sysctl.conf):

    net.ipv4.tcp_synack_retries = 3
    net.ipv4.tcp_syncookies = 1

    执行 sysctl -p 生效。

  • 若用 CDN 或反向代理(如 Nginx),建议把限流逻辑前移到网关层,Apache 专注转发。


H3:用日志 + 脚本做事后监控与告警(低成本兜底)

限流不是万能的,日常需观察是否真被触发。直接解析 Apache access.log 即可:

统计最近 1 分钟 /api/internal/ 的调用量:

awk '$4 ~ /\['$(date -d '1 minute ago' '+%d\/%b\/%Y:%H:%M')/ && $7 ~ /"GET \/api\/internal\// {c++} END {print c+0}' /var/log/apache2/access.log

结合 cron 每 5 分钟跑一次,超阈值发邮件或写入监控系统(如 Prometheus + node_exporter 自定义指标)。

不复杂但容易忽略

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

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

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

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

WorkBuddy

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

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3188

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

5129

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3829

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

486

2026.01.19

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

4290

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3613

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2873

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

7050

2023.07.05

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

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

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