Require all granted 是 Apache 2.4+ 中取代 Order/Allow/Deny 的核心访问控制指令,表示允许所有客户端访问当前作用域资源,必须置于 Directory、Location 或 Files 等容器内,混用旧语法会导致服务启动失败。

Require all granted 是 Apache 2.4+ 中用于开放目录访问权限的核心指令,取代了旧版的 Order Allow,Deny 语法。它表示“允许所有客户端(无论 IP、主机名或协议)访问当前作用域下的资源”,是开发环境或内网服务中快速启用访问的常用写法。
为什么必须用 Require 而不是旧语法
Apache 2.4 彻底移除了 Allow、Deny、Order 等指令,改用统一的 Require 访问控制框架。如果在配置中混用旧语法,服务将无法启动,并报错类似:
Require all granted 的典型位置
该指令必须出现在具有访问控制语义的容器内,常见于以下三类上下文中:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
<Directory "/var/www/html">—— 控制物理目录访问 -
<Location "/admin">—— 控制 URL 路径访问(如反向代理后端) -
<Files ".htaccess">—— 控制特定文件访问(通常配Require all denied)
安全使用要点
直接写 Require all granted 很方便,但上线前需确认是否真需全开放。更稳妥的做法包括:
- 生产环境避免在根目录或敏感路径(如
/phpmyadmin)无条件开放 - 若仅需内网访问,改用
Require ip 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 - 若需限制为本机调试,用
Require local(等价于Require ip 127.0.0.1 ::1) - 禁止单个 IP 时,必须包裹在
<RequireAll>容器中,且先放Require all granted再叠加Require not ip xxx
常见组合写法示例
以下均为合法且常用的现代写法:
- 只允 192.168.5.100 访问:
Require ip 192.168.5.100 - 允整个 172.16.0.0/12 网段:
Require ip 172.16.0.0/12 - 禁止 192.168.1.50 但其他都放行:
<RequireAll> Require all granted Require not ip 192.168.1.50 </RequireAll> - 仅限本地 + 某域名主机:
Require local Require host example.com(注意:多个Require行默认是 OR 关系,如需 AND 逻辑必须用<RequireAll>)

















