Apache IP访问控制分白名单(Require ip或Order Deny,Allow)和黑名单(Require not ip或Order Allow,Deny),须置于Directory/Location/VirtualHost块内,配置后需apachectl -t验证并reload生效。

Apache 的 IP 访问控制主要靠 Require(2.4+)或 Order/Allow/Deny(2.2 及更早)实现。核心思路就两条:要么只放行指定 IP(白名单),要么拦住特定 IP(黑名单)。配置位置通常在 <Directory>、<Location> 或虚拟主机块内,生效前必须重启或重载服务。
白名单模式:只允许特定 IP 访问
适用于后台管理目录、内部接口等需严格限制的场景。比如只允许本地和同事 IP 访问开发环境:
- Apache 2.4 写法(推荐):
<Directory "/var/www/admin"><br> Require ip 127.0.0.1 192.168.1.100 192.168.1.101<br></Directory>
- Apache 2.2 写法:
<Directory "/var/www/admin"><br> Order deny,allow<br> Deny from all<br> Allow from 127.0.0.1 192.168.1.100 192.168.1.101<br></Directory>
- 支持网段写法,如
192.168.1.0/24或192.168.1.(2.2);2.4 中用192.168.1.0/24即可
黑名单模式:拒绝特定 IP 访问
适合屏蔽恶意扫描、爬虫或已知风险 IP:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- Apache 2.4:
<Location "/"><br> <RequireAll><br> Require all granted<br> Require not ip 211.147.235.10 192.168.5.200<br> </RequireAll><br></Location>
- Apache 2.2:
<Directory "/var/www"><br> Order allow,deny<br> Allow from all<br> Deny from 211.147.235.10 192.168.5.200<br></Directory>
- 多个 IP 用空格分隔;若需动态管理,可把 IP 列表抽到独立文件,用
Include conf/blacklist.conf引入
禁止直接用 IP 访问网站
防止用户绕过域名直接输服务器 IP 进入首页(常显示默认站或第一个虚拟主机):
- 在
httpd.conf底部添加一个“兜底”虚拟主机:<VirtualHost *:80><br> ServerName 192.168.1.50 # 替换为你的服务器公网/内网IP<br> <Location "/"><br> Require all denied<br> </Location><br></VirtualHost>
- 确保该配置块排在所有其他
<VirtualHost>之前,或至少在默认主机之后——Apache 匹配按顺序,第一个匹配的生效 - 验证方式:浏览器访问
http://你的IP应返回 403;而http://yourdomain.com正常响应
验证与调试要点
配置后别急着重启,先检查语法再加载:
- 运行
apachectl -t或httpd -t确认配置无语法错误 - 重载服务:
systemctl reload httpd(或apachectl graceful) - 用
curl -I http://your-site/path测试响应头中的状态码(403 表示拒绝成功) - 注意:本地测试时,
127.0.0.1和::1是两个地址,IPv6 环回也要考虑;生产环境建议同时限制 IPv4 和 IPv6

















