环境

  • 有一个域名: blog.dayday.com, 但是没有配置 DNS
  • 有一个 nginx 服务器, ip 为: 10.45.119.120, 然后再 nginx 上配置了对 blog.dayday.com 的转发规则: /v1/~

那么有什么方法可以请求该 nginx 地址, 命中 nginx 的转发规则呢

解决方案

curl -X POST https://10.45.119.120/v1/login -H "Host: blog.dayday.com" --insecure
  • -H "Host: blog.dayday.com": 强制请求头中 Host 字段为我们想要的域名
  • --insecure: 跳过证书校验(如果是 IP 访问且证书不匹配)

这样请求就会走到 IP 地址, 但服务器或者 nginx 会看到请求头中的 Host 是 blog.dayday.com, 从而走到正确的路由

夹带点其他干货

如果想要发送 POST 同时又只看响应头, 可以使用 -D -:

curl -X POST https://10.45.119.120/v1/login -H "Host: blog.dayday.com" --insecure -D -
  • -D -: 会把响应头输出到标准输出, 随后响应体仍然打印

请求携带 cookie

curl -X POST https://10.45.119.120/v1/login -H "Host: blog.dayday.com" -b "token=xxx" --insecure -D -