mod_authz_host是apache中负责基于ip地址、域名等主机特征实施访问控制的核心模块,适用于2.2及以上版本,仅做授权不处理认证;2.4+推荐使用require指令(如require ip、require host),替代已弃用的order/allow/deny语法。

mod_authz_host 是 Apache 中负责基于主机(IP、域名)做访问控制的核心模块,适用于 Apache 2.2 及以上版本。它不处理用户登录认证,只管“谁可以进”,重点在白名单/黑名单控制。配置关键在于指令组合与作用域,稍有疏漏就会 403 拒绝访问。
确认模块已加载并启用
Apache 2.4+ 默认启用 mod_authz_host(模块名 authz_host_module),但需确保未被禁用:
- 运行 sudo httpd -M | grep authz_host(CentOS/RHEL)或 sudo apache2ctl -M | grep authz_host(Debian/Ubuntu),输出含 authz_host_module (shared) 表示已加载
- 若无输出,检查主配置中是否加载:确认 LoadModule authz_host_module modules/mod_authz_host.so 未被注释
- Apache 2.4 推荐同时启用 mod_authz_core(提供 Require 指令基础),它通常默认开启
两种主流配置方式对比
注意版本差异——Apache 2.2 和 2.4 的语法不兼容,混用必报错或失效:
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
-
Apache 2.2 风格(已弃用,仅兼容旧环境):
使用 Order、Allow、Deny 指令
例如:
Order deny,allow
Deny from all
Allow from 192.168.1.0/24 124.207.48.224 -
Apache 2.4+ 风格(当前推荐):
统一使用 Require 指令,配合 RequireAll/RequireAny 组合逻辑
例如:
Require ip 192.168.1.0/24
Require ip 124.207.48.224
Require local
等效于“允许内网段 + 特定公网 IP + 本机回环”
常用 Require 规则写法
所有 Require 指令必须放在
-
按 IP 地址:
Require ip 192.168.5.10、Require ip 2001:db8::/32(IPv6) -
按子网段:
Require ip 10.0.0.0/8、Require ip 172.16.0.0/12 -
按主机名(需开启 DNS 反查):
Require host example.com、Require host *.internal.net -
本地请求(127.0.0.1 / ::1):
Require local -
组合逻辑(需嵌套):
Require ip 192.168.1.0/24
Require not ip 192.168.1.100
表示“允许整个网段,但排除其中一台”
调试与排错要点
配置后访问失败,优先检查这几处:
- 执行 sudo httpd -t 或 sudo apache2ctl -t 确认语法正确
- 查看错误日志:tail -f /var/log/httpd/error_log(RHEL)或 /var/log/apache2/error.log(Debian),搜索 “client denied by server configuration”
- 确认
路径与 DocumentRoot 或实际资源路径完全一致(末尾斜杠不能多也不能少) - 若用 .htaccess,确保主配置中对应目录的 AllowOverride 设置为 All 或至少包含 AuthConfig
- SELinux 启用时,可能拦截访问:临时测试可运行 setenforce 0,确认是否为 SELinux 导致;生产环境建议用 audit2why 分析日志并设置正确上下文









