(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【curlコマンド】hostsファイルに追記せずにホスト名で動作確認する

スポンサーリンク

やりたいこと

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コマンドで指定した設定で接続ができます。

よって、一時的に別の設定でテストする場合にも利用できます。