Apache 2.4 已弃用 Order/Allow/Deny 语法,必须改用 Require 指令:黑名单用 <RequireAll> Require all granted Require not ip IP/网段 </RequireAll>,白名单直接 Require ip IP/网段 或 Require host 域名,禁目录浏览需 Options -Indexes。
apache 2.4 已彻底弃用 order、allow、deny 这套旧权限控制语法,直接使用会触发配置错误(如 ah00526 配置错误),甚至导致服务无法启动。必须改用 require 指令体系,它更统一、更安全,也与认证模块深度整合。
黑名单模式:允许全部,拒绝指定 IP
对应旧写法:
Order allow,deny<br>Allow from all<br>Deny from 192.168.1.100<br>Deny from 203.0.113.0/24
新版等效写法(推荐放在 <Directory> 或虚拟主机段内):
<RequireAll>Require all grantedRequire not ip 192.168.1.100 203.0.113.0/24</RequireAll>
注意:Require not ip 可接多个地址或网段,空格分隔;域名不被直接支持,需配合 mod_authz_host 的 DNS 解析(不推荐用于生产环境的黑名单)。
白名单模式:仅允许特定来源访问
对应旧写法:
Order deny,allow<br>Deny from all<br>Allow from 10.0.0.0/8<br>Allow from example.com
新版简洁写法:
Require ip 10.0.0.0/8Require host example.com
若需同时允许多种条件,可用 <RequireAny> 包裹;Require ip 和 Require host 可共存。不需显式“拒绝全部”,未匹配任何 Require 规则即默认拒绝。
Apache 2.4.62 官方 tar.gz 源码包是 Linux 及类 Unix 系统构建 Web 服务器的核心基础。通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
禁用目录浏览(+ 权限控制)的完整示例
比如限制 /var/www/html/admin 不允许列目录,且只允许运维网段访问:
<Directory "/var/www/html/admin">-
Options -Indexes(关闭目录索引) Require ip 172.16.0.0/12</Directory>
如果还想额外屏蔽某个恶意 IP(如 198.51.100.25),就改用 <RequireAll> 组合:Require ip 172.16.0.0/12Require not ip 198.51.100.25
验证与调试关键点
改完配置后不要直接 reload,先做语法检查:
- 运行
httpd -t(CentOS/RHEL)或apache2ctl -t(Debian/Ubuntu)确认无报错 - 查看错误日志:
tail -n 20 /var/log/httpd/error_log,常见错误如Invalid command 'Order'表示仍有残留旧语法 - 确保
mod_authz_host已启用(Apache 2.4 默认加载,但某些精简安装可能未开) -
.htaccess中若含旧指令,同样要替换;且主配置中对应目录的AllowOverride必须包含AuthConfig才能让Require生效

















