Apache 2.2及更早版本中,Directory白名单靠Order Deny,Allow+Deny from all+Allow from IP实现,Order决定规则执行顺序,Deny,Allow表示Allow优先级更高;该机制在2.4+中已被Require取代。

Apache 2.2 及更早版本中,<Directory> 配合 Order、Deny、Allow 实现 IP 白名单或黑名单控制,核心在于规则执行顺序和匹配逻辑。注意:该机制在 Apache 2.4+ 已被 Require 指令取代,以下仅适用于遗留环境(如 CentOS 6 或老旧定制系统)。
明确 Order 的作用顺序
Order 决定“先检查谁、后以谁为准”,不是简单叠加,而是定义最终判断依据:
-
Order Deny,Allow:先应用所有Deny规则,再叠加Allow规则;最终允许 = 允许集合 − 拒绝集合(即 Allow 优先级更高) -
Order Allow,Deny:先应用所有Allow规则,再叠加Deny规则;最终允许 = 允许集合 ∩(全集 − 拒绝集合),即 Deny 优先级更高
实现白名单(只允特定 IP 访问)
典型场景:开发环境只开放给本机(127.0.0.1)和同事 IP(如 192.168.5.22):
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
<Directory "/var/www/html/dev">
Options None
AllowOverride None
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.5.22
</Directory>
说明:先拒绝全部,再单独放行两个地址;其他任何 IP 请求都会被拦截。
常见写法与注意事项
- IP 段支持简写:
Allow from 192.168.1等价于192.168.1.0/24;也可用掩码192.168.1.0/255.255.255.0 - 域名可用:
Allow from example.com或Allow from *.trusted.co.jp,但依赖 DNS 反查,不推荐生产环境使用 - 避免顺序错误:若用
Order Allow,Deny却只写Allow from xxx,没加Deny from all,结果可能是全部放行 - 配置位置要准确:必须放在
<Directory>、<Location>或.htaccess中,且上下文需启用AllowOverride Limit(对 .htaccess 有效)
验证与调试建议
修改后必须重启 Apache(sudo systemctl restart httpd 或 apache2),不能只重载;可通过 curl 从不同 IP 测试响应状态码(403 表示拦截成功);日志中查看 error_log 是否有 “client denied by server configuration” 提示。

















