Apache 2.4中需先写Require all denied再叠加Require ip放行指定IP,路径必须绝对且严格匹配DocumentRoot;多条件组合须用<RequireAll>容器。
Apache 的 <Directory> 配置中允许特定 IP 访问,关键在于用 Require ip 显式放行、配合 Require all denied 默认拒绝,并确保路径绝对精准、指令语法符合 2.4+ 规范。
Apache 2.4 起默认拒绝所有请求。不写 Require 就等于禁止访问,不能靠“不写就允许”来假设放开。
Require all denied 确保基线安全Require ip 192.168.1.100 或 Require ip 10.0.0.0/8 放行目标地址Require 默认是“或”关系:满足任一即通过<Directory> 块只对当前虚拟主机生效,路径必须是绝对路径,且严格匹配 DocumentRoot 设置。
DocumentRoot "/var/www/example.com",就写 <Directory "/var/www/example.com">
<Directory "/var/www"> —— 这会跨站匹配,也可能不生效<Directory "/var/www/example.com/admin">
支持单 IP、CIDR 网段、IPv6 地址,也支持域名(需 DNS 可解析):
Require ip 127.0.0.1 —— 仅本机Require ip 192.168.5.0/24 —— 整个 C 类网段Require ip ::1 —— IPv6 本地回环Require ip 2001:db8::/32 —— IPv6 网段Require host example.com —— 允许该域名反向解析到的 IP比如“允许内网但排除某个测试 IP”,就得用容器组合逻辑:
<RequireAll>Require ip 192.168.0.0/16Require not ip 192.168.20.55</RequireAll>
注意:Require not ip 必须在 <RequireAll> 内才有效,单独写不构成“且”逻辑。