Cloudflare Docs
Support
Support
Visit Support on GitHub
Set theme to dark (⇧+D)

收集信息以排查站点问题

​​ 收集信息以排查站点问题

了解如何收集数据以诊断问题并协助 Cloudflare 支持进行故障排除。  对于大多数故障排除,Cloudflare 强烈建议您从收集 HAR 文件着手。

本文曾以“如何生成 HAR 文件?”为标题发表

​​ 本文内容


​​ 概述

务必要捕获尽可能多的信息,以诊断问题并 将充足的详情提供给 Cloudflare 支持。本文阐述了如何收集 Cloudflare 支持通常要求的故障排除信息。


​​ 生成 HAR 文件

HTTP 存档 (HAR) 可以记录所有 Web 浏览器请求,包括请求和响应标头、正文内容和页面加载时间。

目前,只有 Chrome 和 Firefox 能够在默认设置下访问 HAR 功能。其他浏览器或者需要浏览器扩展,或者无法生成 HAR。在安装浏览器扩展时,请遵循扩展提供商的说明。

1.在浏览器页面中,右键单击任意位置并选择 Inspect Element

2.浏览器底部或左下方将显示开发者工具。单击 Network 选项卡。gathering_har_file_network.png

3.选中 Preserve log

4.单击记录按钮。

 gathering_har_file_record.png

5.浏览到导致问题的 URL。遇到问题后,右键单击 Network 选项卡中的任何项目,然后选择 Save all as HAR with Content

 save_har_with_content.png

 6.将 HAR 文件附加到您的支持票证。

1.从应用程序菜单中,选择 Tools > Web Developer > Network,或者按 Ctrl+Shift+I (Windows/Linux) 或 Cmd+Option+I (HAR) 。

2.浏览到导致问题的 URL。

3.在重现问题后,右键单击并选择 Save All As HAR

1.浏览到 Developer tools(使用快捷键 F12),再选择 Network 选项卡。

2.浏览到导致问题的 URL。

3.在重现问题后,依次单击 Export as HARSave As…

1.在 Safari 中,确保浏览器窗口顶部显示 Develop 菜单。否则,请转至 Safari > Preferences > Advanced 并选择 Show Develop Menu in menu bar

2.浏览到 Develop > Show Web Inspector

3.浏览到导致问题的 URL。

4.按 Ctrl 键并单击 Web Inspector 中的某一资源,再单击 Export HAR


​​ 确定处理您的请求的 Cloudflare 数据中心

Cloudflare 状态页面中列有 我们数据中心的地图,按照大陆排列。数据中心名称中的三字母代码是距离最近的主要国际机场的 IATA 代码。您可以访问以下网址来确定处理您浏览器的请求的 Cloudflare 数据中心:

http://www.example.com/cdn-cgi/trace 

www.example.com 替换为您的域名和主机名。  注意输出中的 colo 字段。


​​ 利用 cURL 排查请求问题

cURL 是一个发送 HTTP/HTTPS 请求的命令行工具,可在故障排除时使用:

  • HTTP/HTTPS 性能
  • HTTP 错误响应
  • HTTP 标头
  • API
  • 对比服务器/代理的响应
  • SSL 证书

运行以下命令,向您的网站发送标准的 HTTP GET 请求(将 www.example.com 替换为您的域名和主机名):

curl -svo /dev/null http://www.example.com/

此示例 cURL 命令会返回详细列出 HTTP 响应和请求标头的输出,但会丢弃页面正文输出。cURL 输出确认 HTTP 响应,以及 Cloudflare 当前是否在代理站点的流量。响应中存在 CF-RAY 标头确认该请求是通过 Cloudflare 代理的:

CF-Ray:5097b5640cad8c56-LAX

展开以下小节来获取 HTTP 错误、性能、缓存和 SSL/TLS 证书等故障排除提示:

排查 Cloudflare 响应中的 HTTP 错误时,请通过直接将请求发送到源站 Web 服务器来测试问题是否源自您的源站。要排查 HTTP 错误,请直接对源站 Web 服务器 IP 地址(绕过 Cloudflare 代理)运行 cURL:

curl -svo /dev/null --header "Host: example.com" http://203.0.113.34/

例如,如果观察到通过 Cloudflare 代理的流量有 HTTP 520 错误,请对源站 Web 服务器运行 cURL 来确定是否发送了空回复:

curl -svo /dev/null --resolve www.example.com:80:203.0.113.34 http://www.example.com/* Added www.example.com:80:203.0.113.34 to DNS cache* Hostname www.example.com was found in DNS cache* Trying 203.0.113.34...* Connected to www.example.com (127.0.0.1) port 80 (#0)> GET / HTTP/1.1> Host: www.example.com> User-Agent: curl/7.43.0> Accept: */*>* Empty reply from server

cURL 可以通过 -w--write-out cURL 选项衡量 HTTP/HTTPS 请求的延迟或性能下降。以下示例 cURL 衡量了请求事务中的多个性能参数,如 TLS 握手时长、DNS 查询、重定向和传输等:

curl -svo /dev/null https://example.com/ -w "\nContent Type: %{content_type} \\nHTTP Code: %{http_code} \\nHTTP Connect:%{http_connect} \\nNumber Connects: %{num_connects} \\nNumber Redirects: %{num_redirects} \\nRedirect URL: %{redirect_url} \\nSize Download: %{size_download} \\nSize Upload: %{size_upload} \\nSSL Verify: %{ssl_verify_result} \\nTime Handshake: %{time_appconnect} \\nTime Connect: %{time_connect} \\nName Lookup Time: %{time_namelookup} \\nTime Pretransfer: %{time_pretransfer} \\nTime Redirect: %{time_redirect} \\nTime Start Transfer: %{time_starttransfer} \\nTime Total: %{time_total} \\nEffective URL: %{url_effective}\n" 2>&1

Cloudflare 博客中可找到 此计时输出的说明

cURL 可以帮助检查影响缓存的 HTTP 响应标头。特别是,进行 Cloudflare 缓存故障排除时需要检查多个 HTTP标头:

  • CF-Cache-Status
  • Cache-control/Pragma
  • Expires
  • Last-Modified
  • S-Maxage

​​ 使用 cURL 查看证书

以下 cURL 命令了显示了 Cloudflare 在 HTTPS 请求期间提供的 SSL 证书(将 www.example.com 替换为您的域名和主机名):

curl -svo /dev/null https://www.example.com/ 2>&1 | egrep -v "^{.*$|^}.*$|^\* http.*$"

查看原始证书(假设已安装了证书),并将 203.0.113.34 替换为源站 Web 网站的实际 IP 地址,将 www.example.com 替换为您的域名和主机名:

curl -svo /dev/null --header "Host: www.example.com" http://203.0.113.34/ 2>&1 | egrep -v "^{.*$|^}.*$|^\* http.*$"

​​ 测试 TLS 版本

如果要进行浏览器支持故障排除或确认支持的 TLS 版本有哪些,您可以在 cURL 命令中添加下列选项之一来使用 cURL 测试具体的 TLS 版本:

  • --tlsv1.0
  • --tlsv1.1
  • --tlsv1.2
  • --tlsv1.3

​​ 暂停 Cloudflare

暂停 Cloudflare,将流量直接发送到您的源站 Web 服务器,而不经由 Cloudflare 的反向代理。对于暂停的域名,SSL 或 WAF 等所有 Cloudflare 服务均不启用。  除了全局暂停 Cloudflare 外,还可以在 Cloudflare DNS 应用中将接收流量记录设为 灰色云

如何暂停 Cloudflare:

  1. 前往 Cloudflare 仪表板中的 Overview 选项卡。
  2. 单击页面右下角 Advanced Actions 下的 Pause Cloudflare on Site

​​ 执行 traceroute

traceroute 是一款网络诊断工具,可测量数据包通过网络时的路由延迟。大多数操作系统都支持 traceroute 命令。如果您遇到 Cloudflare 代理的网站发生连接问题并想 寻求 Cloudflare 支持的帮助,请务必提供 traceroute 的输出。

请参阅如下有关在不同操作系统上运行 traceroute 的说明。将以下示例中的 www.example.com 替换为您的域名和主机名:

  1. 打开开始菜单。

  2. 单击运行

  3. 要打开命令行界面,请键入 cmd ,然后单击确定

  4. 在命令行提示符下,键入:
    对于 IPv4 -

    > tracert www.example.com

    对于 IPv6 -

    > tracert -6 www.example.com
  5. Enter

  6. 您可以复制结果,以保存到文件中或粘贴到另一个程序中。

  7. 打开一个终端窗口。

  8. 在命令行提示符下,键入:
    对于 IPv4 -

    > traceroute www.example.com

    对于 IPv6 -

    > traceroute -6 www.example.com
  9. 您可以复制结果,以保存到文件中或粘贴到另一个程序中。

  10. 打开 Network Utility 应用程序。

  11. 单击 Traceroute 选项卡。

  12. 在相应的输入字段中键入_域名_或 IP 地址,然后单击 Trace

  13. 您可以复制结果,以保存到文件中或粘贴到另一个程序中。

此外,在使用 Mac OS 终端程序时可同样按照上方 Linux traceroute 说明来操作。


​​ 将 CF-RAY 标头添加至日志

CF-RAY 标头可跟踪通过 Cloudflare 网络的网站请求。对问题进行故障排除时,请将 Web 请求的 CF-RAY  提供给 Cloudflare 支持。也可以通过使用与您 Web 服务器品牌对应的代码段编辑源站 Web 服务器配置,将 CF-RAY 添加到您的日志中:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %{CF-Ray}i" cf_custom
log_format cf_custom '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent" ''$http_cf_ray';

​​ 相关资源