apache 2.4+ 中必须用 require ip 配合 requireall/requireany 容器实现 ip 访问控制,置于 directory/location/虚拟主机块内;默认拒绝,需显式允许如 require ip 192.168.1.100 或 require ip 10.0.0.0/8 172.16.0.0/12,并支持 ipv6 和混合逻辑。

Apache 2.4+ 中,Require ip 是控制客户端访问最直接、最常用的指令之一,它替代了旧版的 Allow from 和 Deny from,必须配合 <requireall></requireall> 或 <requireany></requireany> 容器使用,且需置于 <directory></directory>、<location></location> 或虚拟主机配置块内。
基础用法与常见写法
只允许特定 IP 或网段访问,其他一律拒绝:
-
Require ip 192.168.1.100—— 仅放行单个 IPv4 地址 -
Require ip 10.0.0.0/8 172.16.0.0/12—— 支持多个 CIDR 网段,空格分隔 -
Require ip ::1—— 允许本地 IPv6 回环地址 -
Require ip 2001:db8::/32—— 支持 IPv6 网段
组合拒绝逻辑(白名单 + 黑名单)
若需“默认允许,但排除某些 IP”,不能单独写 Require not ip,必须嵌套在 <requireall></requireall> 中:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 先放行全部:
Require all granted - 再明确排除:
Require not ip 203.0.113.44 198.51.100.0/24 - 整个块必须包裹在
<requireall>...</requireall>内,否则 Apache 启动会报错
与 Require local 和域名配合使用
Require local 是快捷写法,等价于 Require ip 127.0.0.1 ::1,适合开发环境限制仅本机访问;也可混合使用:
-
Require local—— 允许本机 -
Require ip 192.168.5.0/24—— 加上内网段 - 两者放在同一
<requireall></requireall>下表示“必须同时满足”(即交集),放在<requireany></requireany>下表示“满足其一即可”(即并集)
注意事项与生效前提
配置后不生效?检查以下几点:
- 确认 Apache 版本 ≥ 2.4,旧版不识别
Require指令 - 确保所在配置块未被
AllowOverride None锁死,否则 .htaccess 中的Require不起作用 - 目录级配置中,若父目录已有
Require all granted,子目录未重写则会继承——权限控制必须显式声明,不可依赖隐式继承 - 修改后执行
apachectl configtest验证语法,再systemctl reload httpd生效










