Apache 2.4 已彻底弃用 Order/Allow/Deny 指令,必须改用 RequireAll/RequireAny 与 Require ip/Require not ip 组合实现黑白名单,且需显式设置默认策略(如 Require all denied),规则须置于 Directory/VirtualHost 块内并启用 mod_authz_host。

Apache 2.4 已完全弃用 Order、Allow、Deny 指令,继续使用会导致配置失效或 500 错误,日志仅显示模糊的 AH01630: client denied by server configuration。所以,不能在 Apache 2.4 中通过 Order/Allow/Deny 实现黑白名单分级管控——这不是写法问题,而是语法已被移除。
如果你当前运行的是 Apache 2.4(绝大多数现代系统默认版本),必须改用基于 Require 的新授权模型。
以下分场景说明正确做法:
Apache 2.4 正确实现黑白名单分级逻辑
核心是组合 RequireAll(全满足)、RequireAny(任一满足)与 Require not ip,并显式设置默认策略:
-
白名单优先场景(如“只允内网,但放行某几个外网测试机”):
Require all denied
RequireAny
Require ip 192.168.10.0/24
Require ip 203.0.113.42
Require ip 127.0.0.1
-
黑名单补充场景(如“全允许,但封掉已知攻击段+单个IP”):
Require all granted
RequireAll
Require not ip 198.51.100.0/24
Require not ip 203.0.113.15
Apache Superset Dashboard and SQL Exploration Skill下载Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
注意:Require ip 和 Require not ip 不能混在同一 RequireAll 块中,否则逻辑冲突导致全部拒绝。
如果你确实在用 Apache 2.2 或更旧版本
Order/Allow/Deny 仍可用,但仅限老旧环境(如某些嵌入式设备或冻结版本的容器镜像):
-
白名单(先拒后允):
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
Allow from 10.0.0.5
-
黑名单(先允后拒):
Order Allow,Deny
Allow from all
Deny from 198.51.100.22
Deny from 203.0.113.0/24
⚠️ 该语法在 2.4 中加载即报错,不可混用。
必须检查的配套项
- 确保
mod_authz_host已启用(2.4 默认开启,精简版需手动确认) - 规则必须置于
、或块内,不可放在全局 ServerConfig - IPv6 地址需写为
Require ip "2001:db8::/32"(带引号和前缀长度) - 若前端有 Nginx/CDN,需启用
mod_remoteip并配置RemoteIPHeader X-Forwarded-For,否则Require ip匹配的是代理地址
配置后务必执行:apachectl configtest → 确认输出 Syntax OK
再 systemctl reload httpd
不复杂但容易忽略









