在阿里云虚拟主机(如共享虚拟主机或轻量应用服务器)环境中,由于其架构限制,通常不支持直接配置防火墙或修改系统级网络规则(如 iptables),因此屏蔽特定 IP 访问需要通过其他方式实现。以下是几种常见且有效的方法:
✅ 方法一:通过 .htaccess 文件屏蔽 IP(适用于 Linux 虚拟主机)
如果你使用的是 Linux 系统的虚拟主机,并且支持 .htaccess(Apache 服务器),可以通过编辑网站根目录下的 .htaccess 文件来屏蔽指定 IP。
操作步骤:
- 登录你的虚拟主机管理控制台(如通过 FTP 或文件管理器)。
- 进入网站根目录(通常是
htdocs或web目录)。 - 创建或编辑
.htaccess文件。 - 添加以下内容以屏蔽某个 IP:
# 屏蔽单个IP
Deny from 123.45.67.89
# 屏蔽多个IP(每行一个)
Deny from 123.45.67.89
Deny from 10.0.0.1
Deny from 192.168.1.1
# 屏蔽IP段
Deny from 123.45.67
⚠️ 注意:需确保你的 Apache 配置允许使用
Allow/Deny指令(部分新版本 Apache 已弃用,推荐使用Require)。
推荐写法(Apache 2.4+):
<RequireAll>
Require all granted
Require not ip 123.45.67.89
Require not ip 10.0.0.1
</RequireAll>
✅ 方法二:通过 PHP 代码屏蔽 IP
适用于所有支持 PHP 的虚拟主机环境。
示例代码:
在网站入口文件(如 index.php)顶部添加:
<?php
$blocked_ips = array('123.45.67.89', '10.0.0.1');
$client_ip = $_SERVER['REMOTE_ADDR'];
if (in_array($client_ip, $blocked_ips)) {
header('HTTP/1.1 403 Forbidden');
exit('Access denied.');
}
?>
✅ 优点:灵活,可结合数据库动态管理黑名单。
❗ 缺点:只有访问该 PHP 文件时才生效,静态资源(如图片、CSS)可能仍可访问。
✅ 方法三:使用 Web 应用防火墙(WAF)
这是最强大且推荐的方式,尤其适用于阿里云用户。
推荐方案:启用 阿里云 Web 应用防火墙(WAF)
- 登录 阿里云控制台。
- 搜索并进入 Web 应用防火墙(WAF) 服务。
- 将你的域名接入 WAF(需更改 DNS 解析到 WAF CNAME)。
- 在 WAF 控制台设置 IP 黑名单:
- 进入“防护配置” > “黑白名单” > “IP 黑名单”
- 添加要屏蔽的 IP 地址或 IP 段
- 设置拦截动作(如阻断、挑战等)
✅ 优势:
- 不依赖虚拟主机权限
- 可防护 CC 攻击、SQL 注入等
- 支持精准 IP、地域、User-Agent 等规则
✅ 方法四:通过 CDN 设置 IP 黑名单(如阿里云 CDN)
如果你使用了 阿里云 CDN 提速网站:
- 进入 CDN 控制台
- 找到你的域名,点击“管理”
- 进入“访问控制” > “IP 黑白名单”
- 添加 IP 到黑名单
✅ 效果:请求在边缘节点就被拦截,减轻源站压力。
🚫 注意事项
- 虚拟主机权限有限:无法使用 iptables、firewalld 等系统级防火墙。
.htaccess仅对 Apache 生效,Nginx 环境不支持。- 若使用 Nginx + 虚拟主机,通常只能通过 WAF 或 CDN 实现 IP 屏蔽。
- 屏蔽 IP 后建议测试是否生效(可用不同网络或测试)。
✅ 总结:推荐方案
| 场景 | 推荐方法 |
|---|---|
| 有技术能力,仅屏蔽少量 IP | 使用 .htaccess 或 PHP 代码 |
| 希望全面防护、防攻击 | 使用 阿里云 WAF |
| 已使用 CDN 提速 | 使用 CDN IP 黑名单 |
| 高安全需求 | WAF + CDN 结合使用 |
如有具体主机型号(如“经济版”、“独享型”)或是否已备案、是否使用 CDN,可进一步提供更精确建议。
PHPWP博客