先说结论:网站被 DDoS 或 CC 攻击,第一件事不是换服务器,也不是封几个 IP,而是判断攻击类型、把流量引走、保住源站。流量型攻击靠带宽和清洗,CC 攻击靠限流、缓存和挑战。顺序错了,你会在错误的层面上折腾几个小时。
如果你现在正看着带宽打满或 5xx 飙升,先做三件事:
- 看入口:是带宽被打满,还是应用层请求数暴涨
- 看源站:CPU、连接数、数据库是否被打穿,还是只有网络层异常
- 看日志:请求路径、UA、来源 IP 分布,判断是脚本还是真人
下面按“判断类型 → 六步止损 → 源站保护 → 复盘”讲,命令和配置以 Nginx + CDN 为主。
30 秒判断攻击类型
| 类型 | 典型症状 | 先做什么 |
|---|---|---|
| 流量型 DDoS | 入站带宽打满、丢包、延迟飙升,源站 CPU 不一定高 | 切 CDN/清洗、联系运营商 |
| CC / HTTP Flood | 带宽正常但请求数暴涨,PHP/数据库 CPU 高,动态接口慢 | 限流、缓存、挑战、封路径 |
| 混合型 | 带宽和请求数同时异常,源站时好时坏 | 先清洗流量,再处理应用层 |
判断错了,后面全错。流量型攻击你调 Nginx 限流没用,因为包还没到 Nginx;CC 攻击你买高防也没用,因为请求看起来都“合法”。

第 1 步:确认是不是攻击
先排除自己的问题:是不是刚发了活动、被搜索引擎抓取、被监控高频探测、CDN 回源配置错误,或者某个接口被前端轮询打爆。看三个数:入站带宽、新建连接数、请求速率。再看来源分布:集中在一个网段是脚本,分散在大量 ASN 是僵尸网络,带正常 UA 和 Cookie 的可能是模拟真人。
第 2 步:切流量或清洗
能切 CDN 的先切 CDN:把域名解析到支持 DDoS 清洗和 WAF 的平台,源站只接受回源流量。切换前把 DNS TTL 调低,切换后确认回源 IP、证书和缓存规则都正确。流量特别大时,联系 CDN 或云厂商升级清洗带宽,别自己硬扛。
如果攻击已经打到源站 IP,先换 IP 并隐藏新 IP,再把 DNS 切到清洗层。注意:只换 IP 不切架构,攻击者跟着域名走,很快会找到新 IP。
第 3 步:限流和挑战
CC 攻击的核心是“请求太像正常用户”。先做三层限流:
# nginx.conf http 段
limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
limit_req zone=req burst=20 nodelay;
limit_conn addr 20;
}
再对登录、搜索、下单、导出这些高成本接口单独限流,命中后返回 429 或挑战页。CDN 层开 rate limiting、Bot Fight、JS challenge;攻击猛烈时可以短暂开启“Under Attack”模式,但要接受正常用户也被挑战。

第 4 步:降级和静态化
把能静态的页面先静态化,能缓存的接口开短缓存,非核心功能先关:搜索、推荐、评论、统计、导出。数据库是最后一道防线,别让攻击流量把连接池打满。下单、支付这类核心链路保留,但要加队列和限流,避免雪崩。
第 5 步:封禁和源站保护
封 IP 只能止血,不能根治,但可以争取时间。优先封网段和 ASN,而不是单个 IP;对明显恶意的 UA、路径、Header 做规则拦截。更关键的是源站保护:
- 源站防火墙只允许 CDN 回源 IP 段访问 80/443
- 数据库、Redis、面板端口不对公网开放
- 换 IP 后清理历史解析、证书透明日志、邮件头等泄露点
- 回源加鉴权头或 mTLS,防止绕过 CDN 直连

第 6 步:扩容和回源保护
如果攻击持续时间长,临时扩容是有意义的,但要扩在正确的地方:CDN 缓存命中率、源站连接数、数据库连接池。盲目加机器会把压力转移到数据库,最后一样挂。扩容前先确认瓶颈是 CPU、内存、连接数还是带宽。
还有一个容易忽略的点:回源带宽和连接数要单独设上限。CDN 清洗层能扛住攻击,不代表源站能接住所有回源请求;把回源并发、单 IP 连接数和超时设好,才能避免清洗层正常、源站先挂。
为什么换 IP 常常没用
攻击者跟的是域名,不是 IP。你换 IP 后,DNS 一更新,对方很快就能重新解析到。更麻烦的是,历史 DNS 记录、证书透明日志、子域名、邮件头、第三方服务都可能泄露新 IP。换 IP 必须配合清洗层和源站隐藏,否则只是多花半小时。
攻击后复盘
- 攻击峰值、类型、持续时间和入口,写成时间线
- 哪些环节生效、哪些没生效,限流阈值是否需要调整
- 带宽和清洗费用、业务损失、客户投诉
- 源站暴露面:有没有直连 IP、面板端口、未鉴权的回源
- 把应急联系人、切换步骤、回滚方案写成手册,下次不用现找
常见问题 FAQ
Q1:被攻击一定要买高防吗?
不一定。小流量 CC 用 CDN + 限流 + 缓存就能扛;持续的大流量攻击才需要清洗带宽。先判断类型和峰值,再决定花多少钱。
Q2:封 IP 有用吗?
对固定来源的脚本有用,对僵尸网络作用有限。封网段和 ASN 更有效,但要注意别误伤正常用户。
Q3:CDN 开了为什么源站还是被打?
大概率是源站 IP 泄露,或者攻击者绕过 CDN 直连。检查历史解析、子域名、证书日志,把源站防火墙设成只允许 CDN 回源。
Q4:CC 攻击和 DDoS 有什么区别?
DDoS 通常指流量层攻击,目标是占满带宽;CC 是应用层 HTTP 洪泛,目标是耗尽 CPU、连接或数据库。防护手段不一样。
Q5:攻击时要不要关机?
不建议。关机等于业务中断,而且攻击者可能继续打。正确做法是切清洗、限流、降级,保住核心链路。
参考来源
总结
先分清流量型还是 CC,再按“切流量、限流、降级、封禁、源站保护、扩容”的顺序止损。换 IP 不是第一步,封 IP 也不是终点。把源站藏好、把限流和缓存做在前面,比攻击来了再找高防更省钱。
需要一台干净的源站或压测环境做对照,可以按小时开一台萤光云香港 CN2 VPS,把 CDN 回源、限流和静态化配置先验证一遍。







