香港服务器被 CC 刷爆怎么办?单 IP 访问频次限制这样设置更稳

CC 攻击并不一定是“超大流量攻击”,很多时候它更像是大量客户端不断刷新网页、请求接口、访问登录页,让服务器 CPU、数据库、PHP-FPM、后端接口被拖慢。对于香港服务器来说,线路延迟低、访问速度快,但如果没有对单 IP 访问频次做限制,遇到恶意刷接口、刷动态页面、刷登录页时,网站依然可能出现 502、504、数据库占满、页面打开慢等问题。
因此,防 CC 的核心不是简单“封 IP”,而是要按业务类型设置合理的访问频次、连接数、缓存策略和日志识别规则。
一、为什么要限制单 IP 访问频次?
正常用户访问网站,一般是打开首页、浏览几个页面、提交一次表单,访问频率相对稳定。CC 攻击则不同,它常见表现有:
| 攻击表现 | 对服务器的影响 |
|---|---|
| 单 IP 高频刷新页面 | 消耗 Nginx、PHP、数据库资源 |
| 多 IP 同时刷动态接口 | 后端 API 响应变慢 |
| 集中访问登录页、搜索页 | CPU 和数据库查询压力上升 |
| 模拟正常浏览器请求 | 普通防火墙不一定能识别 |
| 刷 WordPress、ZBlog、Discuz 动态页面 | 容易导致 PHP-FPM 进程满载 |
所以,限制单 IP 访问频次,本质上是给网站入口加一道“节流阀”:正常用户可以访问,异常高频请求被延迟、拒绝或拉黑。
二、适合做单 IP 限频的香港服务器配置建议
不同业务对防 CC 的要求不同,服务器配置也不能一刀切。以 A5IDC 香港服务器常见业务场景为例:
| 业务场景 | 推荐配置 | 适合防护方式 |
|---|---|---|
| 企业官网、博客、小型 API | E3-1245V3 / 16GB 内存 / 240G SSD / 30M CN2/CMIN2/CU / 1 IP | Nginx 限频 + 静态缓存 |
| 企业官网、小型后台、轻量接口 | E5-2620V2 ×2 / 32GB 内存 / 480G SSD / 30M CN2/CMIN2/CU / 3 IP | Nginx 限频 + 登录页重点防护 |
| 数据库较多、访问量较高站点 | E-2334 / 32GB 内存 / 960G NVMe SSD / BGP 或 CN2 优化线路 | 限频 + 缓存 + 数据库优化 |
| 多站点、站群、接口业务 | Gold 6138 / 128GB 内存 / 2×960G U.2 SSD / CN2+BGP 线路 | 分站点限频 + WAF + 日志联动封禁 |
| 高并发业务、API 网关、下载分发 | AMD EPYC 系列 / 64GB 以上内存 / NVMe SSD / 大带宽 | 前端网关限速 + 后端分层 |
如果只是普通企业站,E3 或 E5 配置已经可以通过合理限频挡住很多低强度 CC。
如果是动态接口、会员系统、搜索频繁的网站,建议使用 NVMe SSD 和更高主频 CPU,避免数据库查询成为瓶颈。
三、第一层:用 Nginx 限制单 IP 请求频率
Nginx 的 limit_req 是防 CC 最常用的基础方案,可以按照客户端 IP 限制每秒请求次数。
1. 全站基础限频示例
http {
limit_req_zone $binary_remote_addr zone=perip:20m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=addr:20m;
server {
listen 80;
server_name example.com;
limit_req_status 429;
location / {
limit_req zone=perip burst=20 nodelay;
limit_conn addr 30;
proxy_pass http://backend;
}
}
}
这段配置的含义是:
| 参数 | 说明 |
|---|---|
rate=10r/s |
单个 IP 平均每秒最多 10 次请求 |
burst=20 |
允许短时间突发 20 个请求 |
limit_conn addr 30 |
单个 IP 同时连接数最多 30 个 |
429 |
超过限制返回 Too Many Requests |
对于普通企业官网,5r/s - 10r/s 通常比较合适。
对于 API 接口,可以根据业务提高或降低,比如登录接口应更严格,图片资源可以更宽松。
四、第二层:对重点路径单独限频
CC 攻击往往不会平均打全站,而是集中打消耗资源的页面,比如:
/wp-login.php/admin/api/login/search/cart/user/login/index.php
这类路径应该单独设置更严格的规则。
登录页限频示例
limit_req_zone $binary_remote_addr zone=login:10m rate=1r/s;
server {
location = /wp-login.php {
limit_req zone=login burst=3 nodelay;
include fastcgi_params;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
这样可以避免攻击者不断刷登录页、后台入口或验证码接口。
如果是 Laravel、ThinkPHP、WordPress、ZBlog 等动态程序,建议重点限制:
| 类型 | 建议策略 |
|---|---|
| 登录页 | 1 秒 1 次,突发 3 次 |
| 搜索页 | 2-3 秒 1 次 |
| 注册页 | 增加验证码 + 限频 |
| API 接口 | 按接口类型设置不同频率 |
| 后台入口 | 限 IP 或加 Basic Auth |
五、第三层:静态资源不要误伤,动态页面重点保护
很多站点配置限频时容易犯一个错误:把图片、CSS、JS 也纳入严格限频。这样正常用户打开页面时,浏览器会同时加载几十个资源,容易被误判。
建议静态资源单独放宽:
location ~* \.(jpg|jpeg|png|gif|webp|css|js|ico|svg)$ {
expires 7d;
access_log off;
}
真正需要重点保护的是动态请求,例如:
location ~ \.php$ {
limit_req zone=perip burst=10 nodelay;
include fastcgi_params;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
这样既能保证用户正常加载图片和样式,又能控制 PHP、数据库、接口的压力。
六、第四层:结合 Fail2Ban 自动封禁异常 IP
Nginx 限频适合“即时限制”,但如果某个 IP 长时间持续攻击,就需要自动封禁。
可以通过 Fail2Ban 读取 Nginx 日志,把频繁触发 429、403 的 IP 加入防火墙。
思路如下:
- Nginx 对超频请求返回 429;
- 日志中记录异常 IP;
- Fail2Ban 检测短时间大量 429;
- 自动封禁该 IP 10 分钟、1 小时或更久。
适合规则:
| 触发条件 | 处理方式 |
|---|---|
| 1 分钟内触发 429 超过 30 次 | 封禁 10 分钟 |
| 5 分钟内访问登录页超过 50 次 | 封禁 1 小时 |
| 持续访问不存在路径 | 封禁 30 分钟 |
| 大量 POST 请求 | 加入观察名单 |
这种方式适合香港物理服务器,因为它可以直接在服务器本机完成,不依赖第三方平台,响应速度快,成本低。
七、第五层:iptables / nftables 控制连接数
如果攻击已经打到 TCP 连接层,可以在系统防火墙层限制单 IP 连接数。
示例:
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 80 --connlimit-mask 32 -j REJECT
iptables -I INPUT -p tcp --dport 443 -m connlimit --connlimit-above 80 --connlimit-mask 32 -j REJECT
这表示单个 IP 同时连接 80 或 443 端口超过 80 个时直接拒绝。
不过这里要注意:
如果用户集中来自公司办公网、校园网、代理出口或运营商 NAT,多个真实用户可能共用一个公网 IP,限制太低容易误伤。所以连接数限制建议作为辅助策略,不建议设置得过于激进。
八、如果用了 CDN,必须正确获取真实 IP
很多香港服务器会搭配 CDN 使用,但如果 Nginx 没有正确配置真实 IP,那么服务器看到的可能全部是 CDN 节点 IP。此时你限制的不是攻击者,而是 CDN。
正确思路是:
set_real_ip_from CDN节点IP段;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
注意:
只能信任真实 CDN 的 IP 段,不能随便信任所有 X-Forwarded-For,否则攻击者可以伪造 IP 绕过限频。
九、A5IDC 推荐的香港服务器防 CC 组合方案
方案一:轻量企业站 / 博客站
适合业务:
- 企业官网
- WordPress 博客
- ZBlog 网站
- 小型展示站
- 轻量 API
推荐配置:
- CPU:E3-1245V3,4 核 8 线程
- 内存:16GB
- 硬盘:240G SSD
- 带宽:30M CN2/CMIN2/CU
- IP:1 个
- 防护:基础防护
防护建议:
- 首页、栏目页开启缓存;
- PHP 动态请求限频;
- 登录页单独限速;
- 静态资源放宽限制;
- 配合 Fail2Ban 自动封禁异常 IP。
方案二:企业后台 / 会员系统 / 小型接口
适合业务:
- 企业管理系统
- 小型 SaaS 后台
- 会员登录系统
- 订单查询系统
- 接口型网站
推荐配置:
- CPU:E5-2620V2 ×2,12 核 24 线程
- 内存:32GB
- 硬盘:480G SSD
- 带宽:30M CN2/CMIN2/CU
- IP:3 个
- 防护:基础防护
防护建议:
- 登录接口限制为 1r/s;
- 搜索接口单独限频;
- 后台入口限制访问 IP;
- 数据库增加慢查询分析;
- 业务接口按用户 ID、Token、IP 多维度限速。
方案三:高访问站点 / 多站点 / 动态业务
适合业务:
- 多站点托管
- 外贸官网集群
- 站群业务
- 高频 API
- 数据库查询较多的网站
推荐配置:
- CPU:Gold 6138 或 AMD EPYC 系列
- 内存:64GB - 128GB
- 硬盘:NVMe SSD 或 U.2 SSD
- 带宽:CN2/BGP 优化线路
- IP:按业务数量配置
防护建议:
- Nginx 分站点限频;
- Redis 缓存热点数据;
- 数据库读写优化;
- WAF 规则识别异常 User-Agent;
- 重要接口加入验证码、人机验证或签名校验;
- 日志系统按 IP、URL、状态码统计异常访问。
十、限制单 IP 频次时,阈值应该怎么定?
不要一开始就设置得太严格。建议先观察日志,再逐步收紧。
| 网站类型 | 推荐初始限频 |
|---|---|
| 企业展示站 | 5-10r/s |
| WordPress / ZBlog | 3-8r/s |
| 登录接口 | 1r/s |
| 搜索接口 | 1-3r/s |
| API 接口 | 5-20r/s,按业务调整 |
| 静态资源 | 不建议严格限频 |
判断是否设置合理,可以观察:
- 正常用户是否出现 429;
- 搜索引擎抓取是否受影响;
- 后台登录是否被误拦;
- CPU 和 PHP-FPM 是否明显下降;
- 数据库慢查询是否减少;
- 攻击 IP 是否集中在某些路径。
十一、只限制 IP 够不够?
不够。
单 IP 限频只能解决一部分 CC。现在很多 CC 会使用代理池、肉鸡 IP、模拟浏览器、分布式请求。如果攻击 IP 数量很多,单 IP 限频只能降低单个 IP 压力,不能完全解决所有问题。
更完整的方案应该是:
访问入口限频
↓
重点接口加严
↓
静态资源缓存
↓
动态页面缓存
↓
Fail2Ban 自动封禁
↓
WAF 规则识别
↓
必要时接入高防或清洗
对于普通网站,Nginx 限频 + 缓存 + Fail2Ban 已经能挡住很多低中强度 CC。
对于持续性、大规模、分布式 CC,则建议结合高防 IP、CDN/WAF 或高防服务器方案。
香港服务器防 CC,不是简单把某个 IP 拉黑,也不是只靠更高配置硬扛。真正有效的做法,是根据业务访问特征,限制单 IP 请求频次、控制连接数、保护登录和接口、优化缓存,并通过日志持续调整规则。
对于 A5IDC 香港服务器用户来说,如果是企业官网、博客、小型后台,选择 30M CN2/CMIN2/CU 线路的香港服务器,再配合 Nginx 限频和 Fail2Ban,就能建立一套轻量但实用的基础防 CC 体系。
如果业务涉及会员系统、API 接口、多站点或高并发访问,则建议选择更高 CPU、更大内存、NVMe SSD 的香港服务器,并将防护策略从“单点限频”升级为“入口限速 + 应用缓存 + 日志封禁 + WAF 联动”的完整方案。