宝塔面板怎么防 CC 攻击?Nginx 限速配置实操

2026-10-29更新于 2026-11-02操作教程约 9 分钟

很多小站长用宝塔面板管理服务器,被 CC 打了之后想找"宝塔防 CC 怎么配"。这篇讲实操。

先说结论:宝塔自带的防护能挡住小规模 CC 和扫描,但挡不住真正的分布式 CC。它是「应急手段」,不是「解决方案」。

宝塔有哪些防护功能

功能位置作用
Nginx 免费防火墙软件商店IP 黑名单、UA 过滤、频率限制
网站防火墙(付费)软件商店CC 防护、SQL 注入、XSS
系统防火墙安全端口控制、IP 黑白名单
Nginx 配置网站 → 设置 → 配置文件limit_req 限速

方案一:Nginx 限速(免费,最实用)

在宝塔的「网站 → 设置 → 配置文件」里,找到 http 块,加入限速规则:

# 定义限速区:按 IP 限制,10MB 内存,每秒 10 个请求
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;

# 定义连接数限制
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

然后在 server 块里应用:

server {
    # 突发允许 20 个,超出的排队
    limit_req zone=req_limit burst=20 nodelay;

    # 单 IP 最多 20 个并发连接
    limit_conn conn_limit 20;

    # 超限返回 429 而不是 503(更友好)
    limit_req_status 429;
    limit_conn_status 429;
}

参数怎么定:

  • rate=10r/s:正常用户不会一秒点 10 次,这个值对大多数网站够用
  • burst=20:允许瞬间 20 个请求(页面加载会并发请求多个资源)
  • nodelay:突发部分立即处理,不排队

方案二:针对登录接口单独限速

登录接口最容易被 CC 打,因为它要查数据库、算密码哈希,最耗资源。

# 登录接口单独限速:每分钟 5 次
location = /api/login {
    limit_req zone=req_limit burst=5 nodelay;
    limit_req_status 429;

    # 可选:只允许 POST
    limit_except POST { deny all; }

    proxy_pass http://127.0.0.1:8080;
}

方案三:UA 和 Referer 过滤

低级的 CC 工具 UA 是空的或者是固定值,可以直接拦:

# 拦截空 UA
if ($http_user_agent = "") {
    return 403;
}

# 拦截常见攻击工具 UA
if ($http_user_agent ~* "(curl|python|java|scrapy|bot)") {
    return 403;
}
注意:UA 过滤只能挡低级的,改一下 UA 就绕过了。别指望这个。

方案四:宝塔付费防火墙

宝塔的「网站防火墙」插件(付费,约 100 元/年)有 CC 防护功能:

  • CC 防御:可设置单 IP 访问频率、封禁时长
  • 人机验证:可疑请求弹验证码
  • IP 黑名单:自动封禁高频 IP

对小站来说够用,但要注意:

  • 会消耗服务器 CPU(规则匹配需要算力)
  • 可能误杀正常用户(尤其用了 CDN 的情况)
  • 分布式 CC 完全无效(每个 IP 只发一点点)

用 CDN 的话要特别注意

如果你在宝塔前面套了 CDN,Nginx 看到的 IP 全是 CDN 节点的 IP,不是真实用户 IP。

这时候按 IP 限速会把 CDN 节点封掉,导致全站不可访问。

解决:配置 real_ip 模块

# 在 http 块里
set_real_ip_from 0.0.0.0/0;  # 生产环境应填 CDN 的 IP 段
real_ip_header X-Forwarded-For;
real_ip_recursive on;

配完之后,$binary_remote_addr 才是真实用户 IP。

验证方法:配好后看 Nginx 日志里的 IP,如果还是 CDN 节点的 IP,说明没生效。也可以用 curl -H "X-Forwarded-For: 1.2.3.4" 测试。

宝塔防护的上限在哪

说清楚,避免期望过高:

攻击类型宝塔能防吗
小规模 CC(单 IP 高频)✅ 能
扫描、暴力破解✅ 能
分布式 CC(代理池)❌ 不能
DDoS 流量攻击❌ 完全不能
UDP Flood❌ 完全不能

核心原因:宝塔是在你的服务器上做软件层过滤。如果攻击流量已经把带宽打满,软件层根本收不到请求,配什么都没用。

而且软件过滤本身要消耗 CPU——被 CC 打的时候,防护规则反而可能成为压垮服务器的最后一根稻草。

正确的防护层次

  1. 带宽层:靠服务商的清洗中心,本地做不了
  2. 网络层:防火墙规则、IP 黑名单
  3. 应用层:Nginx 限速、WAF(宝塔在这层)
  4. 业务层:会话校验、验证码、风控

宝塔只能覆盖第 3 层的一部分。真正的 DDoS 防护必须在第 1 层解决。

小站的务实建议

  1. 先把 Nginx 限速配上,免费且有效,能挡掉大部分低级 CC
  2. 登录接口单独限速,这是最容易被针对的地方
  3. 关掉不必要的端口,减少攻击面
  4. 日志开起来,被打时能分析
  5. 真被大规模打了,别死磕宝塔,上专业防护或者套 CDN

小结

宝塔的防护是「够用但不强」:

  • 日常防护、挡扫描、挡低级 CC → 够用
  • 分布式 CC、DDoS → 挡不住

如果游戏业务被持续攻击,光靠宝塔解决不了,需要的是节点级的防护。对比可以看 游戏盾和高防 IP 到底选哪个。

想先验证线路质量?不限时长的免费调试实例,规格与个人版一致,不自动转正、不产生费用。
领取调试实例