1. 问题描述与环境概览
• 现象:部分手机用户通过移动网络或 Wi-Fi 无法打开网站,浏览器长时间转圈或显示 524/522/502 等错误。
• 域名与CDN:域名 example.com 已接入 CDN(如 Cloudflare),DNS A 解析指向 CDN 节点。
• 服务器示例:后端为 VPS,配置 Ubuntu 20.04 + Nginx 1.18,2 vCPU / 4 GB RAM,公网 IP 203.0.113.45。
• 影响范围:仅移动端报错,桌面端或同网络内其他设备正常,提示可能与 MTU、TLS 或中间链路有关。
• 工具与权限:需具备 CDN 控制台、域名解析管理、服务器 SSH 权限以及抓包工具(tcpdump/wireshark)。
2. 初步检查(二十分钟内完成)
• 检查 DNS:使用 dig 或 nslookup,确认域名在启用 CDN 后解析到 CDN 的 IP 而非源站。
• CDN 设置:确认是否启用了“加速/代理”模式(proxied)、禁止或强制 IPv6、最小 TLS 版本或 Bot 管理策略。
• SSL/TLS:确认证书是否有效,移动端的链路是否支持当前 TLS 1.3 或是否被强制为 TLS 1.2。
• 烦扰规则:查看 CDN 是否启用了 WAF 或速率限制、地理封禁,是否把某些 UA 或 IP 段阻断。
• 直接访问测试:在本地电脑或手机上将 hosts 指向源站 IP(绕过 CDN)检查能否打开,以区分问题在 CDN 侧还是源站侧。
3. 抓包定位(tcpdump/wireshark 示范)
• 在源站上抓包:sudo tcpdump -i eth0 host 203.0.113.45 and port 443 -w capture.pcap。
• 在客户端抓包:使用 Android/PC 抓取手机请求,看是否到达 CDN 节点或被 CDN 返回错误包。
• 观察三次握手与 TLS 握手是否完成,是否存在大量 RST 或重复 ACK。
• 示例抓包摘要(截取三条关键包,帮助定位超时或重置):
| 时间 | 源 IP:端口 | 目的 IP:端口 | Flags | 说明 |
| 10:12:05.123 | 198.51.100.12:443 | 203.0.113.45:52344 | SYN | CDN 与源站建立连接请求 |
| 10:12:05.223 | 203.0.113.45:52344 | 198.51.100.12:443 | RST | 源站重置连接(可能防火墙、连接限制) |
| 10:12:10.500 | 198.51.100.12:443 | 203.0.113.45:52344 | ACK | 长时间无响应导致重试或超时 |
• 说明:若看到 CDN 到源站的 SYN 被 RST,说明源站主动关闭或防火墙阻断;若三次握手完成但 TLS 未完成,则可能是协议不兼容。
4. 日志排查(Nginx access/error 日志举例)
• Nginx access.log 示例:203.0.113.45 - - [28/Jun/2026:10:12:05 +0000] "GET / HTTP/1.1" 524 0 "-" "Mozilla/5.0 (iPhone)"
• Nginx error.log 示例:[error] 1234#0: *56789 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 198.51.100.12, server: example.com, request: "GET /", upstream: "http://10.0.0.5:8080/"
• 检查是否有大量 499(客户端提前关闭)或 524/522 在 CDN 侧对应超时/连接失败。
• 配置样例:Nginx proxy_read_timeout 60s; proxy_connect_timeout 10s; keepalive_requests 100; worker_processes auto;
• 结合抓包与日志:若日志显示 upstream timed out 且抓包显示源站未返回,则需优化后端应用或扩容 VPS。
5. 常见错误码与成因对应表
• 403/404:权限或路径问题,通常源站返回,CDN 可能缓存了错误页面。
• 502/504:源站返回或网关超时,常见于后端应用崩溃或响应慢。
• 520/522/524(Cloudflare特有):520 源站异常响应,522 连接超时(三次握手问题),524 源站响应超时(HTTP 响应太慢)。
• 网络层问题:MTU 导致分片失败、TCP MSS、IPv6 与中间设备不兼容均可使手机特定网络出现问题。
• 防火墙/速率限制:iptables/ufw 或 负载均衡/云防火墙误封 CDN 节点 IP,导致 CDN 无法连接源站。
6. 解决步骤与长期防御建议
• 临时绕过 CDN:将域名在本地 hosts 指向源站 IP,验证是否能打开,快速定位是否 CDN 导致。
• 检查并放行 CDN IP 段:在服务器防火墙中放行常见 CDN 节点 IP 列表,例:198.51.100.0/24。
• 调整超时与并发:Nginx 增加 proxy_read_timeout,扩容后端进程,VPS 升到 4 vCPU / 8 GB RAM 若并发高。
• 部署 DDoS 防御:启用 CDN 的速率限制、挑战页、WAF 规则,并在源站使用 fail2ban、限流和连接数限制。
• 监控与回放:持续抓包、上报日志到 ELK/Prometheus,设置告警(响应时间、错误率、连接数)并记录真实案例复盘日志。