免费版Nginx防火墙CC防御效果有限,需手动加黑名单、还原真实IP并配置limit_req限流;专业版智能模式可动态调阈值、支持POST防护与会话级限流。

免费版Nginx防火墙开CC防御只能拦“显眼包”,真要快速封住高频攻击IP,必须手动加黑名单+补系统级限流,否则攻击者换几个IP就继续刷。
为什么开了CC防御还是被拖慢
因为宝塔免费版的CC防御只统计「同一IP在触发周期内对任意URI的总请求数」,不看连接数、不看请求耗时、不分GET/POST、也不还原真实IP(套CDN后全封CDN节点)。攻击者用50个IP各发15次/s的慢速POST,每IP都卡在阈值下,但你的php-fpm进程早被占满。
常见错误现象:
- 开了
CC防御,access.log里403极少,但服务器负载飙升、PHP响应超时 - 去
黑名单页签发现全是106.11.x.x、121.40.x.x这类阿里云/腾讯云CDN出口IP - 临时封禁默认1小时,攻击者等一小时又换批IP重来
必须立刻做的三件事:手动加黑名单 + 还原真实IP + 补limit_req
别等自动封——它不会主动加IP,得你从日志里捞出来手动塞进黑名单。
- 打开
/www/wwwlogs/your-site.error.log,搜403或limit,挑出最近10分钟内反复出现的IP(比如203.0.113.45) - 进宝塔
Nginx防火墙→黑名单页签 → 粘贴IP → 点添加(不是“临时封禁”,是永久拉黑) - 如果站点套了CDN,先确认
$clientRealIp变量已定义:进网站→设置→配置文件,在http块顶部加:map $http_x_forwarded_for $clientRealIp {<br> "" $remote_addr;<br> ~^(?P<firstaddr>[^,]+),?.*$ $firstaddr;<br>} - 再在
location / {}里加限流:limit_req zone=perip burst=10 nodelay;
对应http块里的limit_req_zone $clientRealIp zone=perip:10m rate=5r/s;
专业版智能模式比免费版强在哪
它不是设个固定数字就完事,而是先学你站点24小时正常访问节奏,再动态调阈值。比如凌晨流量低,它自动收紧;白天大促突增,它悄悄放宽。
- 进
网站→防火墙→全局配置→CC防御,选智能模式 - 单站点可额外开
POST请求CC防护(防暴力提交)或Cookie会话级限流(防账号爆破) - 在
恶意容忍度里设连续恶意请求封禁阈值,比如填3,系统记IP的“坏行为次数”,满3次就封24小时,比免费版的固定60秒靠谱得多 - 首次启用后等约15分钟才开始学习基线,这期间务必盯
防火墙日志,确认没把googlebot或监控探针拖进黑名单
真正难的不是配参数,而是分清哪些IP该封、哪些该放——比如微信内嵌WebView会带MicroMessenger UA但请求密集,直接按频率一刀切就误伤;而扫/phpmyadmin/的IP,哪怕只来了3次也该立刻进黑名单。


















