如何在阿里云ECS上设置IP访问频率限制?

在阿里云 ECS 上设置 IP 访问频率限制,通常有以下几种主流方案,可根据业务场景选择:


✅ 方案一:使用 安全组 + 云防火墙(推荐用于基础防护)

  • 适用场景:简单限流、防扫描/暴力破解。
  • 操作方式
    1. 登录 阿里云控制台 → 进入目标 ECS 实例 → 安全组
    2. 添加一条入方向规则,协议选 TCP/UDP,端口设为应用端口(如 80/443)。
    3. 源地址填具体 IP 或 CIDR,但安全组本身不支持“频率限制”(仅支持白名单/黑名单)。

⚠️ 注意:安全组无法实现“每分钟 N 次请求”这类频率控制,需结合其他工具。


✅ 方案二:在 Web 服务器层做限流(最常用 & 灵活)

▶ Nginx 限流(以 limit_req 为例)

http {
    # 定义限流区域:10MB 内存,按 IP 区分,1 秒内允许 5 个请求
    limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=5r/s;

    server {
        listen 80;
        server_name example.com;

        location / {
            limit_req zone=ip_limit burst=10 nodelay;
            # 可选:返回自定义错误页
            limit_req_status 429;

            proxy_pass http://backend;
        }
    }
}

✅ 优点:轻量、无需额外服务;
❌ 缺点:重启 Nginx 生效,多节点需统一配置。

▶ Apache 限流(mod_ratelimit / mod_evasive)

# 安装 mod_evasive
a2enmod evasive

# /etc/apache2/conf-available/evasive.conf
<IfModule mod_evasive20.c>
  DOSHashTableSize 3097
  DOSPageCount 2
  DOSSiteCount 50
  DOSPageInterval 1
  DOSSiteInterval 1
</IfModule>

重启后生效:systemctl restart apache2


✅ 方案三:使用 WAF(Web 应用防火墙)—— 阿里云官方推荐

  • 优势
    • 图形化配置 IP 频率策略(如:单 IP 1 分钟 ≤ 60 次请求)
    • 自动识别异常流量(CC 攻击防护)
    • 支持地域/IP 段聚合规则
    • 与 CDN 联动,边缘节点即拦截
  • 操作步骤
    1. 开通 WAF(免费版含基础 CC 防护)
    2. 将域名接入 WAF(CNAME 解析)
    3. 进入「防护策略」→「CC 防护」→ 创建规则:
      • 匹配条件:IP = $client_ip
      • 动作:限流(如:1 分钟内最多 100 次)
      • 处置:返回 403 / 验证码 / 跳转
    4. 启用并测试

💡 提示:若 ECS 直接暴露公网 IP(无域名),可配合 SLB + WAFAPI 网关 实现类似效果。


✅ 方案四:脚本级限流(适合临时/开发环境)

  • 用 Python/Shell 监控 /var/log/nginx/access.log,发现某 IP 高频则动态封禁:
    # 示例:每 10 秒检查一次,单 IP 超过 100 次/分钟则加入 iptables 黑名单
    while true; do
    awk '{print $1}' access.log | sort | uniq -c | while read count ip; do
    if [ "$count" -gt 100 ]; then
      iptables -A INPUT -s "$ip" -j DROP
    fi
    done
    sleep 10
    done

    ⚠️ 注意:生产环境慎用,易误伤;建议结合 Redis 做分布式计数。


🔒 最佳实践建议

场景 推荐方案
个人博客/小站 Nginx limit_req
企业官网/API WAF CC 防护 + Nginx 二级限流
高并发 API 服务 API 网关限流 + Redis 令牌桶算法
防暴力破解 SSH 安全组 + fail2ban(非 HTTP 限流)

需要我帮你生成一份针对你具体技术栈(如:Nginx 版本、是否用 K8s、是否已接 CDN)的完整配置模板吗?

云服务器