apache 2.4+白名单配置核心是先require all denied再逐条require ip,多条默认“或”关系;2.2版须用order deny,allow+deny/allow组合,顺序错误将导致失效,且必须配合allowoverride none、路径准确及mod_remoteip(cdn场景)等配套设置。

Apache 的 <directory></directory> 权限控制中配置白名单,核心是**明确拒绝所有访问,再单独放行指定 IP 或网段**。关键取决于 Apache 版本(2.2 vs 2.4+),语法完全不同,配错会导致 500 错误或规则失效。
Apache 2.4+(主流版本,推荐用法)
使用 Require 指令,必须显式声明拒绝,默认不拒绝;多条 Require 默认是“或”关系。
-
只允许单个 IP 访问:
<directory><br> Require all denied<br> Require ip 192.168.1.100<br></directory>
-
允许整个网段(如局域网):
Require ip 192.168.1.0/24或Require ip 10.0.0.0/8 -
允许多个独立 IP 或网段:
直接并列写多行Require ip,例如:Require ip 192.168.1.50<br> Require ip 172.16.0.0/12<br> Require ip 2001:db8::/32
-
搭配本地回环(开发常用):
Require local等价于Require ip 127.0.0.1 ::1,可放在最后作为补充
Apache 2.2(老旧环境,已淘汰)
用 Order + Allow/Deny,顺序决定逻辑:先执行 Order 定义的判断流程,再按行匹配。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
白名单写法(仅允许某 IP):
Order Deny,Allow<br> Deny from all<br> Allow from 192.168.1.100
- 注意顺序不能颠倒**:**
若写成Order Allow,Deny,即使后面Deny from ...,也可能被前面的Allow from all覆盖,导致白名单失效
必须检查的配套设置
光写 Require 或 Allow 不够,以下三点常被忽略:
-
AllowOverride None是安全前提:防止 .htaccess 文件绕过主配置,尤其在生产环境应禁用 -
确保
<directory></directory>路径与实际 DocumentRoot 一致:路径错误会导致规则完全不生效 -
启用必要模块:2.4+ 需
mod_authz_host(通常默认开启);若用 CDN,还需mod_remoteip并设置RemoteIPHeader X-Forwarded-For,否则匹配的是代理 IP
验证是否生效
别只靠浏览器刷新,要分步确认:
- 运行
apachectl configtest或apache2ctl configtest,输出Syntax OK才继续 - 用
systemctl reload httpd(非 restart),避免连接中断 - 从白名单 IP 和非白名单 IP 分别 curl 测试:
curl -I http://your-site/admin/—— 白名单应返回 200,其他应返回 403










