利用cURL排查请求问题
cURL是一个发送HTTP/HTTPS请求的命令行工具,可在故障排除时使用:
HTTP/HTTPS性能
HTTP错误响应
HTTP标头
API
对比服务器/代理的响应
SSL证书
本文将指导您利用cURL排查请求问题。
Windows中不默认安装cURL,需要使用 安装向导。
运行以下命令,向您的网站发送标准的HTTP GET请求(将www.example.com替换为您的域名和主机名):
此示例cURL命令会返回详细列出HTTP响应和请求标头的输出,但会丢弃页面正文输出。cURL输出确认HTTP响应,以及ShopBase当前是否在代理站点的流量。
请查看 cURL命令选项 以了解其他功能。
请参阅以下列表来获取HTTP错误、性能、缓存和SSL/TLS证书等故障排除提示:
排查ShopBase响应中的HTTP错误时,请通过直接将请求发送到源站服务器来测试问题是否源自您的源站。要排查HTTP错误,请直接对源站服务器IP地址(绕过ShopBase代理)运行cURL:
如果您有多个源站服务器,请逐一测试以确保没有响应差异。如果在直接连接源站服务器时观察到问题,请联系您的主机提供商来获取帮助。
cURL可以通过 -w 或 --write-out cURL 选项衡量HTTP/HTTPS请求的延迟或性能下降。以下示例cURL衡量了请求事务中的多个性能参数,如TLS握手时长、DNS 查询、重定向和传输等:
如上例中所示,在每个变量前用 \n 添加新行可以获得更加清晰的结果。否则,所有指标都会一起显示在一行之中。
cURL可以帮助检查影响缓存的HTTP响应标头。特别是,进行ShopBase缓存故障排除时需要检查多个HTTP标头:
CF-Cache-Status
Cache-control/Pragma
Expires
Last-Modified
S-Maxage
使用cURL查看证书:以下cURL命令了显示ShopBase在HTTPS请求期间提供的SSL证书(将www.example.com替换为您的域名和主机名):
2>&1 | egrep -v "^{.$|^}.$|^ http.*$" *清理并解析TLS握手和证书信息。
要显示原始证书(假设已安装了证书),请将下面的203.0.113.34替换为您源站服务器的实际IP地址,并将www.example.com替换为您的域名和主机名:
测试TLS版本:如果要进行浏览器支持故障排除或确认支持的TLS版本有哪些,您可以在cURL命令中添加下列选项之一来使用cURL测试具体的TLS版本:
--tlsv1.0
--tlsv1.1
--tlsv1.2
--tlsv1.3
收集信息以排查站点问题
HTTP/HTTPS性能
HTTP错误响应
HTTP标头
API
对比服务器/代理的响应
SSL证书
本文将指导您利用cURL排查请求问题。
指南
Windows中不默认安装cURL,需要使用 安装向导。
运行以下命令,向您的网站发送标准的HTTP GET请求(将www.example.com替换为您的域名和主机名):
curl -svo /dev/null http://www.example.com/
此示例cURL命令会返回详细列出HTTP响应和请求标头的输出,但会丢弃页面正文输出。cURL输出确认HTTP响应,以及ShopBase当前是否在代理站点的流量。
请查看 cURL命令选项 以了解其他功能。
请参阅以下列表来获取HTTP错误、性能、缓存和SSL/TLS证书等故障排除提示:
HTTP错误
排查ShopBase响应中的HTTP错误时,请通过直接将请求发送到源站服务器来测试问题是否源自您的源站。要排查HTTP错误,请直接对源站服务器IP地址(绕过ShopBase代理)运行cURL:
curl -svo /dev/null http://example.com --connect-to ::203.0.113.34
如果您有多个源站服务器,请逐一测试以确保没有响应差异。如果在直接连接源站服务器时观察到问题,请联系您的主机提供商来获取帮助。
性能
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
如上例中所示,在每个变量前用 \n 添加新行可以获得更加清晰的结果。否则,所有指标都会一起显示在一行之中。
缓存
cURL可以帮助检查影响缓存的HTTP响应标头。特别是,进行ShopBase缓存故障排除时需要检查多个HTTP标头:
CF-Cache-Status
Cache-control/Pragma
Expires
Last-Modified
S-Maxage
SSL/TLS 证书
使用cURL查看证书:以下cURL命令了显示ShopBase在HTTPS请求期间提供的SSL证书(将www.example.com替换为您的域名和主机名):
curl -svo /dev/null https://www.example.com/ 2>&1 | egrep -v "^{.*$|^}.*$|^* http.*$"
2>&1 | egrep -v "^{.$|^}.$|^ http.*$" *清理并解析TLS握手和证书信息。
要显示原始证书(假设已安装了证书),请将下面的203.0.113.34替换为您源站服务器的实际IP地址,并将www.example.com替换为您的域名和主机名:
curl -svo /dev/null https://www.example.com --connect-to ::203.0.113.34 2>&1 | egrep -v "^{.*$|^}.*$|^* http.*$"
测试TLS版本:如果要进行浏览器支持故障排除或确认支持的TLS版本有哪些,您可以在cURL命令中添加下列选项之一来使用cURL测试具体的TLS版本:
--tlsv1.0
--tlsv1.1
--tlsv1.2
--tlsv1.3
关联页面
收集信息以排查站点问题
更新于。 13/09/2022
谢谢!