apache本身不支持按子域名直接设置qps或带宽配额;可通过rewriterule匹配host头拒绝特定域名、require指令白名单放行、mod_limitipconn限制该子域名并发连接数来实现近似控制。

Apache 本身不支持直接按域名设置请求频率(QPS)或带宽配额,但可以通过组合模块与配置逻辑,在请求进入处理流程的早期阶段,对特定域名实施访问控制、并发限制或基础防刷,从而达到“限制其对资源的请求”这一实际效果。关键在于:不是靠单一指令,而是靠匹配 Host 头 + 应用对应策略。
用 RewriteRule 拦截并拒绝特定域名
这是最常用、最可靠的方式,适用于所有 Apache 2.4+ 环境,无需额外模块:
- 在
块内(推荐)或 .htaccess 中启用重写引擎: RewriteEngine On - 用
RewriteCond匹配目标域名,例如屏蔽bad-site.com和www.bad-site.com:RewriteCond %{HTTP_HOST} ^(www\.)?bad-site\.com$ [NC] - 用
RewriteRule直接返回 403:RewriteRule ^ - [F]
其中[F]表示 Forbidden,[L]可加可不加(因无后续规则),但加了更稳妥 - 若需记录拦截行为,可配合
ErrorLog或自定义日志格式,不依赖已弃用的 RewriteLog
用 Require 指令只允许白名单域名访问
比“黑名单式拒绝”更安全,适合生产环境统一管控入口:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在虚拟主机或目录块中使用 Require host 明确放行合法域名:
<requireall><br> Require host example.com<br> Require host www.example.com<br> Require all denied<br></requireall>
- 注意:
Require host匹配的是%{HTTP_HOST}值,不解析 DNS,也不受 CDN IP 影响 - 若需保留健康检查路径(如
/health)对所有来源开放,可在同一虚拟主机内嵌套<location> Require all granted </location>
用 mod_limitipconn 控制该域名下的并发连接数
适用于防止下载类子域名(如 dl.example.com)被多线程打满服务器连接:
- 确保
mod_limitipconn已加载(通常需手动启用) - 在对应子域名的
块中配置: <ifmodule mod_limitipconn.c><br> MaxConnectionsPerIP 5<br> NoIPLimit image/*<br></ifmodule>
- 效果:每个客户端 IP 对该子域名最多维持 5 个活跃 HTTP 连接,超出即返回 503
- 它不限制请求数,但能有效缓解慢速攻击和暴力爬取
不推荐但需了解的误区
有些方案看似相关,实则不适用或已过时:
- ProxyBlock:仅用于正向代理且 Apache 2.4+ 中已弃用;反向代理场景完全无效
-
LimitRequestRate:是全局或目录级限速,无法绑定到某个
ServerName或 Host 头 - mod_evasive 的 DOSPageCount:按 URL 路径统计,不区分 Host,多个子域名共用同一路径时无法隔离
- 删除虚拟主机配置:虽能阻止服务响应,但若域名仍解析到服务器 IP,请求会落到默认虚拟主机,未必真正“限制”,反而可能暴露默认页










