やりたいこと
Ingressのようなホスト名で待ち受けているサービスに対してcurlコマンドで動作検証をしたい。
ただし/etc/hostsへの書き込み権限はないとする。
環境情報
$ curl --version curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
やり方
-H
オプションでHost:
を指定する。
$ curl -H "Host:sample.hoge.com" 10.11.12.13
以下、補足です。
補足
受付側がnginxやIngressなどで宛先ホストで転送先を変えている場合などはIPアドレスのみでは弾かれてしまいます。
以下が詳細メッセージですがHost:としてIPアドレスが入っています。
$ curl -v 10.11.12.13 * Rebuilt URL to: 10.11.12.13/ * Trying 10.11.12.13... * TCP_NODELAY set * Connected to 10.11.12.13 (10.11.12.13) port 80 (#0) > GET / HTTP/1.1 > Host: 10.11.12.13 > User-Agent: curl/7.55.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Sat, ... < Content-Type: text/html < Transfer-Encoding: chunked < Connection: keep-alive <
一方で以下のようにヘッダーにホスト名を指定するとそれがリクエストに反映されます。
$ curl -v -H "Host:sample.hoge.com" 10.11.12.13 * Rebuilt URL to: 10.11.12.13/ * Trying 10.11.12.13... * TCP_NODELAY set * Connected to 10.11.12.13 (10.11.12.13) port 80 (#0) > GET / HTTP/1.1 > Host:sample.hoge.com < HTTP/1.1 200 OK < Date: Sat, ... < Content-Type: text/html; charset=utf-8 < Transfer-Encoding: chunked < Connection: keep-alive < X-XSS-Protection: 1 < X-Instance-ID: ... < Vary: Accept-Encoding <
ちなみに/etc/hostsに
sample.hoge.com 20.21.22.23
のような組が既に入っている場合でも同オプションを使えばcurlコマンドで指定した設定で接続ができます。
よって、一時的に別の設定でテストする場合にも利用できます。