curlコマンドでHostヘッダ(VirtualHost)を指定してWEBアクセス確認する方法

IT技術

概要

ApacheやNginxなどのWEBサーバを構築してWEBアクセス確認する場合、「curlコマンド」を使用する。

(実行例)
[root]# curl -v http://dummy-host.example.com
* About to connect() to localhost port 8098 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 8098 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:8098
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sun, 17 Jul 2022 09:51:54 GMT
< Server: Apache/2.4.54 (Unix)
< Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
< ETag: "2d-432a5e4a73a80"
< Accept-Ranges: bytes
< Content-Length: 45
< Content-Type: text/html
< 
<html><body><h1>It works!</h1></body></html>
* Connection #0 to host localhost left intact
[root]#

この際、ドメイン(今回の例ではdummy-host.example.com)の名前解決ができなかったり、既存システムで同じドメインが使われている場合、上記のコマンドでは構築したWEBサーバに対して確認ができない。

解決方法

hostsファイルを設定する方法もあるが、今回はcurlコマンドに-Hオプションを指定し、Hostヘッダ情報を追加する方法を行う。

[root]# curl -v -H "Host:<ドメイン>" http://<WEBサーバのホスト名/IPアドレス>

以下が実行例である。
ローカル環境にApacheをインストールし、8098ポート番号でWEBアクセスを受け付けるように構築した。

[root]# curl -v -H "Host:dummy-host.example.com" http://localhost:8098
* About to connect() to localhost port 8098 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 8098 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Accept: */*
> Host:dummy-host.example.com
> 
< HTTP/1.1 200 OK
< Date: Sun, 17 Jul 2022 10:05:13 GMT
< Server: Apache/2.4.54 (Unix)
< Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
< ETag: "2d-432a5e4a73a80"
< Accept-Ranges: bytes
< Content-Length: 45
< Content-Type: text/html
< 
<html><body><h1>It works!</h1></body></html>
* Connection #0 to host localhost left intact
[root]#

Apacheに複数のVirtualHostを設定した場合でも、Hostヘッダを変更すればそれぞれのVirtualHostに対してWEBアクセス確認が可能である。

[root]# curl -v -H "Host:dummy-host2.example.com" http://localhost:8098
* About to connect() to localhost port 8098 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 8098 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Accept: */*
> Host:dummy-host2.example.com
> 
< HTTP/1.1 200 OK
< Date: Sun, 17 Jul 2022 10:07:56 GMT
< Server: Apache/2.4.54 (Unix)
< Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
< ETag: "2d-432a5e4a73a80"
< Accept-Ranges: bytes
< Content-Length: 45
< Content-Type: text/html
< 
<html><body><h1>It works!</h1></body></html>
* Connection #0 to host localhost left intact
[root]# 
タイトルとURLをコピーしました