Apache的<Directory>块不支持限流,因其仅为静态路径权限容器,仅接受Require等指令;限流须用<Location>配合mod_evasive、mod_ratelimit等模块实现目录级防刷与带宽控制。

Apache 的 <Directory> 块本身不支持防刷限流功能。它只负责路径级的访问控制(如谁可以读、是否允许执行脚本),不能统计请求频次、识别 IP 异常或动态拦截流量。
为什么 Directory 里不能直接写限流
<Directory> 是静态权限容器,作用于文件系统路径,仅支持 Require、Options、AllowOverride 等指令。所有主流限流模块(如 mod_evasive、mod_ratelimit、mod_qos)都不接受在 <Directory> 内直接配置限流参数——语法会报错或被忽略。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
正确做法:用 Location + 限流模块组合实现目录级防刷
要对某个具体目录(比如 /downloads 或 /api)做防刷,必须改用 <Location> 容器,并嵌入对应模块的指令:
-
限制单 IP 对下载目录的请求频次(防暴力刷文件):
<Location "/downloads"><br> <IfModule mod_evasive20.c><br> DOSPageCount 3<br> DOSPageInterval 1<br> DOSBlockingPeriod 300<br> </IfModule><br> </Location> -
限制该目录下所有响应的带宽(防大文件拖垮带宽):
<Location "/downloads"><br> SetOutputFilter RATE_LIMIT<br> SetEnv rate-limit 200<br> </Location>
(注意:需先启用mod_ratelimit,且rate-limit值为正整数 KB/s) -
限制该目录的并发连接数(防 IDM/迅雷多线程):
<Location "/downloads"><br> <IfModule mod_limitipconn.c><br> MaxConnPerIP 3<br> OnlyIPLimit application/octet-stream<br> </IfModule><br> </Location>
关键注意事项
这些限流配置必须放在 <VirtualHost> 内,不能丢到全局服务器段或 <Directory> 中;<Location> 匹配的是 URL 路径,不是磁盘路径,所以和 DocumentRoot 无关;多个 <Location> 可共存,Apache 按最长匹配生效。

















