apache 2.4+ 可通过 require not ip 指令直接拒绝特定 ip 段,无需额外模块;推荐在虚拟主机或目录配置中设置,支持 cidr 格式,保存后重载服务生效;.htaccess 方式需启用 allowoverride authconfig,性能略低。

Apache 可以通过 Require not ip 指令直接拒绝特定 IP 段访问,这是 Apache 2.4+ 的标准做法,无需额外模块(mod_authz_host 默认已启用)。配置位置灵活,可放在虚拟主机、目录或 .htaccess 中,关键在于指令顺序和上下文权限控制。
在虚拟主机配置中设置(推荐)
这是最稳定、性能最好的方式,适用于宝塔面板或手动编辑 vhost 文件(如 /www/server/panel/vhost/apache/xxx.conf 或 /etc/apache2/sites-enabled/xxx.conf):
- 进入
<virtualhost></virtualhost>或<directory></directory>区块内 - 确保已有
Require all granted允许正常访问 - 在其后添加一行或多行
Require not ip,支持 CIDR 格式(如192.168.50.0/24)或简写(如203.0.113.0/28) - 完整示例:
<directory>
Require all granted
Require not ip 192.168.100.0/24
Require not ip 203.0.113.16/28
Require not ip 2001:db8::/32
</directory>
保存后执行 sudo systemctl reload apache2(Ubuntu/Debian)或 sudo /etc/init.d/httpd reload(CentOS),规则立即生效。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
用 .htaccess 实现(适合无服务器权限场景)
若只能通过 FTP 修改网站根目录,可在 .htaccess 中添加规则(需确认 Apache 已启用 AllowOverride AuthConfig):
- 在网站根目录新建或编辑
.htaccess - 写入以下内容(注意:Apache 2.4 不再支持旧版
Order/Deny/Allow):
<requireall>
Require all granted
Require not ip 192.168.200.0/24
Require not ip 198.51.100.10
</requireall>
无需重启服务,保存即生效。但注意:.htaccess 每次请求都会被读取,性能略低于主配置;且某些托管环境会禁用该功能。
验证与注意事项
配置完成后建议快速验证:
- 从被屏蔽网段内的设备访问网站,应返回
403 Forbidden - 检查 Apache 错误日志(
/var/log/apache2/error.log或宝塔面板【网站】→【日志】)是否有语法错误提示 - IPv6 网段需确保 Apache 编译时启用了 IPv6 支持(宝塔默认支持)
- 避免重复写
Require all denied—— 它会覆盖所有允许规则,导致全站不可访问










