蓝易云CDN:用 Linux 命令发送 <font color="red">HTTP 请求</font> 实战指南 🚀

在节点排障、业务联调、CDN 回源检测时,直接用 Linux 命令发送 <font color="red">HTTP</font> 请求,是最干脆也最稳定的方式。下面用几个常见工具,帮你快速建立一套可复制的“命令行探针”。


一、常用工具总体认知 🧠

工具核心用途适合场景关键优势
<font color="red">curl</font>构造各种 HTTP 请求接口调试、CDN 回源验证功能最全、几乎所有 Linux 自带
<font color="red">wget</font>拉取页面/文件简单可用性检测语法简单、默认就走 HTTP/HTTPS
<font color="red">httpie</font>结构化接口调试JSON API 调试输出更友好、适合频繁调试
<font color="red">nc</font>发送原始报文底层排障、抓包验证直观看到原始 HTTP 报文

二、用 <font color="red">curl</font> 发送基础 HTTP 请求

1. 最简单的 GET 请求(带详细握手过程)

curl -v https://example.com/

解释:

  • curl:最常用的 <font color="red">HTTP 客户端命令</font>。
  • -v:显示详细过程,包括 TLS 握手、请求头、响应头,非常适合排查 CDN/回源问题。
  • https://example.com/:目标 URL,可替换为你的业务域名或回源地址。

✅ 典型用途:

  • 看看节点到目标站点的链路是否通、是否 301/302 跳转;
  • 分析 <font color="red">响应头</font>,确认是否命中 CDN、压缩、缓存等配置。

2. 用 <font color="red">curl</font> 发送表单 POST 请求

curl -X POST -d "name=test&age=18" https://api.example.com/user

解释:

  • -X POST:显式指定使用 <font color="red">POST 方法</font>;
  • -d "name=test&age=18":以 application/x-www-form-urlencoded 方式发送表单数据;
  • https://api.example.com/user:接口地址,常用于模拟前端表单提交。

✅ 典型用途:

  • 快速模拟用户注册、登录、表单提交等业务场景;
  • 对接第三方回调/通知接口时,先用命令行验证参数是否正确。

3. 用 <font color="red">curl</font> 发送 JSON 请求(常用于 API)

curl -X POST "https://api.example.com/user" \
  -H "Content-Type: application/json" \
  -d '{"name":"test","age":18}'

解释:

  • -H "Content-Type: application/json":设置请求头,告诉服务器这是 <font color="red">JSON</font> 请求;
  • -d '{"name":"test","age":18}':发送 JSON 格式的请求体;
  • \:换行符,仅仅是让命令更易读,不影响实际执行。

✅ 典型用途:

  • 调试 HTTP/JSON 接口(登录、下单、回调等);
  • 和后端一起验证 JSON 字段是否齐全、类型是否正确。

4. 指定 Host + UA,用于 CDN/回源排查

curl -H "Host: www.example.com" \
     -H "User-Agent: BlueEasy-Check" \
     http://1.2.3.4/

解释:

  • -H "Host: www.example.com":手动指定 <font color="red">Host 头</font>,常用于直接访问源站 IP 时模拟真实域名;
  • -H "User-Agent: BlueEasy-Check":设置自定义 UA,方便在日志里单独识别这类探测请求;
  • http://1.2.3.4/:直接访问源站 IP,绕过 DNS,检验源站本身是否正常。

✅ 典型用途:

  • 判断是 CDN 层问题,还是源站/网络问题;
  • 日志中精确筛选出运维自检请求。

三、用 <font color="red">wget</font> 做简单可用性检测

wget -qO- https://example.com/health

解释:

  • wget:传统下载工具,同样支持 <font color="red">HTTP/HTTPS</font> 请求;
  • -q:静默模式,不输出日志,只保留结果;
  • -O-:把响应内容输出到标准输出(终端),不保存成文件;
  • https://example.com/health:常见的健康检查接口。

✅ 典型用途:

  • 写进 crontab 或健康检查脚本中,周期性探测业务存活状态;
  • 在容器/节点内快速确认对外访问是否通。

四、用 <font color="red">httpie</font> 做结构化 API 调试(可选安装) 🌈

若节点允许安装工具,可以用更友好的 httpie

http POST https://api.example.com/user name=test age=18

解释:

  • httphttpie 提供的命令;
  • POST:请求方法,直接写在 URL 前面;
  • name=test age=18:自动按表单或 JSON 方式组织数据(可通过选项控制);
  • 默认输出高亮的 <font color="red">请求头 + 响应头 + JSON</font>,可读性很强。

✅ 典型用途:

  • 高频 API 开发/联调场景;
  • 需要人眼快速分析请求/响应结构的场景。

五、用 <font color="red">nc</font> 构造原始 HTTP 报文(底层排障用)

printf 'GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n' | nc example.com 80

解释:

  • printf '... \r\n\r\n':手动拼出完整的 HTTP 报文:

    • 第一行:GET / HTTP/1.1 为请求行;
    • Host: example.com 指定虚拟主机;
    • Connection: close 表示请求完成后主动断开连接;
    • 最后空行(\r\n\r\n)用于标记请求头结束。
  • | nc example.com 80:通过 <font color="red">netcat</font> 把报文丢给目标主机 80 端口,直接建立 TCP 连接发送。

✅ 典型用途:

  • 需要完全控制报文内容时(例如复现某些边界 bug);
  • 配合抓包工具,分析 TCP/HTTP 交互细节。

六、命令对比与选型思路表(Markdown / vditor 可用) 📊

场景推荐命令关键参数选择理由
查看页面是否能正常打开<font color="red">curl</font>curl -v URL同时看到响应头、重定向、TLS 信息
简单健康检查/监控<font color="red">wget</font>wget -qO- URL语法简单,便于脚本集成
调试 JSON API<font color="red">curl</font> / <font color="red">httpie</font>-H 'Content-Type: application/json' -d '{}'http POST便于构造复杂请求体
定位底层报文问题<font color="red">nc</font>`printf 'GET ...'nc`完全可控的原始 HTTP 报文
检查 CDN 回源行为<font color="red">curl</font>-H 'Host: ...' http://IP/直接访问源站 IP,验证回源链路

七、落到实战:蓝易云节点上的使用建议 💼

  1. 在每台节点上统一保留一套常用命令模板(尤其是带 <font color="red">Host 头</font> 的 curl),遇到问题直接套用。
  2. 建议把 curl -v 的输出定期保存到日志,用于分析跨区域、跨运营商链路的差异。
  3. 结合你的高防/CDN 体系,把这些命令固化到排障手册和自动化脚本里,形成标准化的“HTTP 体检流程”。

这样一套命令体系,基本可以覆盖从“我能不能访问”到“这条 HTTP 报文到底长什么样”的全链路需求 👍


蓝易云
39 声望7 粉丝

蓝易云高防服务器:www.tsyvps.com