给后台目录加了拒绝规则,结果连允许的办公网 IP 也进不去了,日志里全是 403,规则表面上看着没写错。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,Order 和 Require 的先后顺序决定了谁覆盖谁,Deny 写在 Allow 后面,白名单就被整体盖掉了,谁都不放行,看着像权限没生效,其实是规则顺序写反了。

「Apache 目录权限顺序」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。报错里带路径的,先去看那个路径在不在、权限对不对。

<Directory /var/www/admin>
    Require ip 10.0.0.0/8
</Directory>
# 2.2 才是 Order allow,deny

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

具体做法是,先确认现在跑的是 2.2 还是 2.4 的语法,两套写法不通用;2.4 版本里统一用 Require ip 代替旧的 Order,两种写法千万别混着用;改完用白名单内和白名单外各试一次,两个方向都要验证。

最后用这个标准收尾,白名单里的 IP 返回 200,其他来源仍然保持 403,两个方向都对才算改好。

作者 9823189