在日常运维中,经常会遇到这样一种情况:
域名刚解析到 CDN,访问立刻变慢,甚至直接 504超时。
不少客户第一反应是:
-
是不是线路问题?
-
是不是被 CC / DDoS 了?
-
CDN 节点不稳定?
但实际处理下来会发现,大部分刚接入 CDN 的 504,和攻击、线路关系并不大。
一、先说结论:504 ≠ 一定被打
504 的本质是:
CDN 节点向源站请求超时
也就是说,请求已经到了 CDN,但 CDN 没能在规定时间内拿到源站的正常响应。
这里的关键点在于:
问题发生在“回源”这一段
而不是用户 → CDN 这一段。
二、最常见的错误判断路径
很多人在排查时,第一步就走偏了:
-
看监控,发现访问慢
-
直接怀疑线路或攻击
-
开始盯流量、封 IP、切节点
但如果是刚接入 CDN 就出现 504,通常应该反过来想:
-
之前直连源站是否完全正常?
-
CDN 回源方式是否和原来一致?
-
源站是否允许 CDN IP 访问?
三、刚接入 CDN 最容易导致 504 的几个原因
下面这些,是实际中最常见的情况。
回源 IP 或端口不通
-
源站防火墙未放行 CDN IP
-
回源端口配置错误(如 80 / 443 / 非标端口)
-
源站只监听内网或指定 IP
这类问题的特点是:
-
本地直连 IP 正常
-
一走 CDN 就超时
Host 头不一致
源站使用了:
-
Nginx 多站点
-
Apache 虚拟主机
-
面板绑定域名访问
如果 CDN 回源 Host 和源站期望的不一致,源站会:
-
返回空响应
-
返回异常页面
-
直接不响应
最终表现出来,依然是 504。
HTTPS 配置未完全同步
常见情况包括:
-
CDN 已启用 HTTPS,但源站未监听 443
-
源站证书过期 / 中间证书缺失
-
回源协议设置错误(HTTP ↔ HTTPS)
尤其是刚给域名加证书时,最容易忽略这一点。
源站本身性能边缘不稳
有些源站在直连时“刚好能用”,但:
-
并发稍高就响应变慢
-
数据库连接数偏紧
-
PHP / Java 进程偶发卡顿
CDN 回源默认有超时限制,这种“临界状态”的源站,很容易被放大成 504。
四、我们一般是怎么快速判断的
在实际处理中,比起“是不是被打”,我们更关注三点:
-
源站 IP 直连是否稳定
-
CDN 节点到源站的连通性
-
回源配置是否与源站实际环境一致
如果这三点确认没问题,才会进一步考虑:
-
CC 攻击
-
线路异常
-
节点侧问题
五、为什么很多人会误以为是线路或攻击
原因很简单:
-
504 是“看起来很严重”的错误码
-
CDN 接入和攻击时间点经常重合
-
网络问题和配置问题的表现高度相似
但经验告诉我们,接入初期的问题,80% 是配置问题,而不是外部攻击。
六、总结一句话
刚接入 CDN 就 504,优先查回源,不要先查攻击。
把回源链路、端口、Host、协议这几项理顺,往往问题就已经解决了一大半。
