要调查有关 Spectrum 应用程序的问题,请使用本页中描述的日志和诊断信息。有关创建或更新应用程序时返回的 API 验证错误,请参阅错误代码。
Spectrum 会记录其代理的每个连接的生命周期,包括边缘到源站故障的状态代码(例如,521 连接被拒绝,522 超时,523 不可达)。请参阅事件日志。
当 Spectrum 应用程序使用虚拟网络源站时,流向源站的流量将通过与虚拟网络关联的连接器 (connector)。请使用针对您的连接器类型的来源,从连接器端诊断源站连接。
- Tunnel 日志 记录
cloudflared与 Cloudflare 网络之间,以及cloudflared与您的源站之间的活动。请参阅 日志流 (Log streams)。 - Tunnel 诊断日志 从单个
cloudflared实例收集诊断报告。请参阅 诊断日志 (Diagnostic logs)。 - 私有网络连接 涵盖流量未通过隧道到达私有源站的常见原因。请参阅 私有网络连接 (Private network connectivity)。
有关连接 WAN 的源站的隧道健康状况、BGP 和路由诊断,请参阅排除 Cloudflare WAN 故障。
- 在仪表板中创建 Spectrum 应用程序时,您收到错误:"An A, AAAA or CNAME record already exists with that host." (该主机已存在 A、AAAA 或 CNAME 记录。)
- 对于您尝试用于新 Spectrum 应用程序的主机名,您已经拥有一个手动创建的代理 DNS 记录(
A、AAAA或CNAME)。
Cloudflare 不支持在同一主机名上同时拥有手动创建的代理 DNS 记录(A、AAAA 或 CNAME)和 Spectrum 应用程序。这是因为 Spectrum 会为该应用程序配置并管理自己的 DNS 记录,这与现有的手动创建的记录相冲突。这是平台限制,而不是仅限仪表板的限制。
此限制仅适用于手动创建的代理记录。多个 Spectrum 应用程序 —— 包括 HTTP/HTTPS 和 TCP/UDP 应用程序类型的混合 —— 可以共享同一主机名,因为 Spectrum 会为它们中的每一个管理 DNS 记录。
如果您只需要在该主机名上使用 Spectrum 应用程序(例如,在 TCP/UDP Spectrum 应用程序旁边使用 HTTP/HTTPS Spectrum 应用程序),则不需要解决方法 —— 可以在同一主机名上创建额外的 Spectrum 应用程序。
如果您需要保留该主机名上手动创建的代理 DNS 记录(例如,通过 CDN 和 WAF 而不是通过 Spectrum 路由标准 HTTP/HTTPS 流量),请改用拆分主机名架构,其中手动创建的代理记录和 Spectrum 应用程序使用不同的主机名:
| 流量类型 | 主机名 | Cloudflare 服务 |
|---|---|---|
| HTTPS (Web UI、API) | app.example.com |
带有 CDN/WAF 的手动创建代理 DNS 记录 |
| TCP (自定义协议、ICA/HDX 等) | app-tcp.example.com |
Spectrum 应用程序 |
将您的应用程序或客户端配置为针对每种流量类型使用适当的主机名。
有关此限制的更多详细信息,请参阅 Spectrum 限制。
- 您的 Spectrum 应用程序边缘端口使用 HTTP(例如,端口 8012),而您的源站期望在端口 443 上接收 HTTPS。
- 源站拒绝连接或返回错误,因为它接收的是纯文本 HTTP,而不是加密的 HTTPS。
- 配置似乎按照:
http:8012 → Cloudflare Spectrum → http:443 (源站)运作,而不是预期的http:8012 → Cloudflare Spectrum → https:443 (源站)。
Spectrum 运作在第 4 层 (TCP/UDP)。当 Edge TLS Termination 设置为 off (Passthrough) 时,Spectrum 会将原始 TCP 有效负载转发到源站而不进行修改。它不执行协议升级 —— 连接到端口 443 上的源站并不自动意味着连接将使用 HTTPS。
要从 Cloudflare 发送加密流量到您的源站,您必须在 Spectrum 应用程序上打开 Edge TLS Termination(边缘 TLS 终止),并将其设置为 Full 或 Full (Strict):
- Full:Cloudflare 使用 TLS 连接到源站,但不验证源站证书。
- Full (Strict):Cloudflare 使用 TLS 连接到源站,并对照受信任的 CA 或 Cloudflare Origin CA 验证源站证书。
您可以在仪表板中的 Spectrum 应用程序设置中,或者通过将 API 中的 tls 字段设置为 full 或 strict 来配置 Edge TLS Termination。
有关详细信息,请参阅 Edge TLS Termination。
- 对于将 Edge TLS Termination 设置为 Full 或 Full (Strict) 的 TCP 应用程序:到源站的连接失败。Spectrum 事件日志可能会显示
521(连接被拒绝)或522(连接超时),因为源站上的 TLS 握手失败被报告为源站连接故障。有关完整的状态代码参考,请参阅事件日志。 - 对于 HTTP/HTTPS 应用程序:客户端收到错误
525(SSL handshake failed,SSL 握手失败)。
这些错误通常在创建 Spectrum 应用程序或修改 TLS 设置后出现。
Cloudflare 与您的源站服务器之间的 TLS 握手失败。常见原因包括:
- Edge TLS Termination 设置为 Full 或 Full (Strict),但源站没有有效的 TLS 证书或不接受在配置端口上的 TLS 连接。
- Spectrum 应用程序源站指向另一个由 Cloudflare 代理的主机名(例如,
origin.example.com.cdn.cloudflare.net)。这创建了一个双重代理链,而 TCP 应用程序类型不支持这样做,并且可能导致 TLS 握手失败。 - Cloudflare 边缘和源站服务器之间的 TLS 版本或密码套件不匹配。
- 验证您的源站服务器是否具有有效的 TLS 证书,并已配置为在源端口上接受 TLS 连接。
- 如果使用 Full (Strict),请确保源站证书由公众信任的 CA 或 Cloudflare Origin CA 证书颁发。
- 确认 Spectrum 应用程序源站未指向另一个由 Cloudflare 代理的主机名。请使用直接源 IP 地址或直接解析到您的源站服务器(而不是通过 Cloudflare 代理)的 DNS 名称。
- 如果源站仅支持特定的 TLS 版本,请注意,在开启 Edge TLS Termination 时,Spectrum 支持 TLS 1.1、1.2 和 1.3。
Spectrum 使用其自己的一组连接状态代码,这些代码不同于 Cloudflare CDN 层使用的 HTTP 状态代码。有些代码共享数字(例如,444、499),但具有不同的含义。
有关完整的状态代码表,请参阅事件日志。
下表列出了经常观察到的 Spectrum 状态代码模式及其可能原因:
| 模式 | 可能原因 | 建议操作 |
|---|---|---|
| 大量 444 (源站发送 RST) | 源站服务器正在主动重置连接。可能表明源站过载、防火墙配置错误或应用程序崩溃。 | 检查源站服务器健康状况、防火墙规则和应用程序日志。 |
| 大量 445 (源站超时) | 已建立的到源站的连接正在超时。可能表明源站响应缓慢或网络路径问题。 | 检查源站服务器性能以及 Cloudflare 与源站之间的网络连接。 |
| 大量 497 (客户端超时) | 客户端连接正在超时。可能表明客户端与 Cloudflare 边缘之间的网络问题,或客户端处于长时间空闲连接状态。 | 检查客户端网络状况,并考虑调整空闲超时预期。 |
| 大量 498 (客户端管道断开) | 客户端连接在会话中途断开。可能表明客户端网络不稳定(例如移动用户)。 | 对于移动或不可靠的网络来说通常是预期的。监控趋势。 |
| 大量 499 (客户端发送 RST) | 客户端正在主动关闭连接。可能表明客户端超时或应用程序级断开连接。 | 检查客户端应用程序超时设置。 |
| 521 (源站拒绝连接) | 源站不接受所配置端口上的连接。 | 验证源站服务器正在运行并正在正确的端口上监听。检查源站防火墙。 |
| 522 (源站连接超时) | 无法建立到源站的 TCP 连接。 | 验证源站 IP 地址、端口,以及源站可从 Cloudflare 访问。 |