Webサーバ/IPアドレス/ポート番号を追加したりすることなく、Webサイトを増設したいことがある。それにはWebサイトごとにホスト・ヘッダ値を設定するという方法がある。WindowsのIISでも、ホスト・ヘッダ値を利用して複数のWebサイトを運用できる。
対象ソフトウェア:Windows 2000 Server/Windows Server 2003、IIS 5.0/IIS 6.0
新たにWebサイトを立ち上げたいが、コストなどの事情からWebサーバ・マシンは増やしたくないとき、既存のWebサーバ・マシンにそのWebサイトを追加することになるだろう。つまり単一のサーバ・マシンで複数のWebサイトを運用するということだ。この場合、どのように各Webサイトへのアクセス要求を正しく割り振るかが課題となる。
単純なのは、Webサイトごとに異なるIPアドレスを割り当て、DNSサーバでも各Webサイトのドメイン名を各IPアドレスに名前解決させることで、各Webサイトへのアクセス要求を各IPアドレスに割り振ることだ。しかし、コストなどの事情からサーバ・マシンにIPアドレスを追加できないことも多い。
Webサイトごとに異なるポート番号を割り当てるという方法もある。しかし、デフォルトの80番以外のポートを割り当てたWebサイトの場合、クライアント側では「http://www.example.jp:12345/index.html」のようにポート番号(ここでは12345番)をいちいちURLに加えなければならない。ユーザーに面倒を強いる点で、あまり好ましい方法とはいえない。
そこでおすすめなのはホスト・ヘッダを利用する方法だ。ホスト・ヘッダとはクライアントからWebサーバへ送信されるHTTPリクエスト・パケットのヘッダに含まれる情報の1つで、通常はURL中のドメイン名が格納されている。例えばクライアントが「http://www.example.jp/index.html」というURLを開こうとした場合、ホスト・ヘッダには「www.example.jp」という値が格納される。つまり、各Webサイトに割り当てられたIPアドレスが同一であっても、ホスト・ヘッダを参照できれば、各Webサイトへのアクセス要求を識別できるということだ。
Windows OS標準のInternet Information Services(IIS)にも、ホスト・ヘッダ値からWebサイトを識別する機能があり、単一IPアドレスでの複数Webサイトの運用が可能だ。本稿ではその設定方法と注意点について説明する。
なお、Windows 2000 ProfessionalのIIS 5.0およびWindows XP ProfessionalのIIS 5.1には、Webサイトを1つしか運用できない制限があるため、そもそも複数のWebサイトは運用できない。しかし、ホスト・ヘッダ値そのものは、本稿で説明している手順で設定して利用できる。
本稿では、各Webサイトのドメイン名が、IISの稼働するWebサーバのIPアドレスに名前解決されるよう、あらかじめDNSサーバ(DNSゾーン)が設定されているものとする。
IISでホスト・ヘッダに関する設定を行うには、まず管理者アカウントで[管理ツール]の[インターネットインフォメーション サービス (IIS) マネージャ](IISマネージャ)を起動し、対象のWebサイトのプロパティを開く。なお、以下ではいずれもWindows Server 2003+IIS 6.0の画面を例に挙げているが、Windows 2000 Server+IIS 5.0でも操作方法はほとんど変わらない(設定項目名などが若干異なる程度の違いしかない)。
プロパティ画面が表示されたら[Web サイト]タブを選んで、[詳細設定]ボタンをクリックする。
[A]
[Web サイト ID の詳細設定]画面が表示されたら、[この Web サイトの複数の ID]枠に注目する。ホスト・ヘッダ値はIPアドレスおよびポート番号と組み合わせて設定する必要があり、この枠には設定済みの組み合わせが一覧表示される。この組み合わせは1つのWebサイトにつき複数設定できる。新たにこの組み合わせを追加するには、[追加]ボタンをクリックする。
[B]
[Web サイトの識別の追加と編集]画面が表示されたら、ホスト・ヘッダ値とともにIPアドレスとポート番号を指定して、[OK]ボタンをクリックする。なお、ホスト・ヘッダ値には、ドメイン名に相当するIPアドレスも指定できる。例えば「192.168.1.101」と設定すると、「http://192.168.1.101/」のようにIPアドレスを直接指定したリクエストに応答するようになる。
[C]
設定したら[OK]ボタンをクリックしていって各ダイアログを閉じていく。同じIISにある他のWebサイトについても同様に、ドメイン名に合わせたホスト・ヘッダ値を設定する。
上記の手順で、次のように複数のWebサイトに対してホスト・ヘッダ値を割り当てたとする。なお、以下のホスト・ヘッダ値にあるドメイン名はいずれも同一のIPアドレス(192.168.1.101)に名前解決されるものとする。
サイト名 | IPアドレスの設定 | ポート番号 | ホスト・ヘッダ値 |
---|---|---|---|
Webサイト1 | (未使用の IP アドレスすべて) | 80 | www.example.jp |
Webサイト2 | (未使用の IP アドレスすべて) | 80 | bbs.example.jp、 192.168.1.101 |
Webサイト3 | (未使用の IP アドレスすべて) | 80 | www.example.co.jp、 example.co.jp |
既定のWebサイト | (未使用の IP アドレスすべて) | 80 | (なし) |
複数のサイトに対するホスト・ヘッダ値の設定例 どのドメイン名も、Webサーバに割り当てられた同一のIPアドレス(192.168.1.101)に名前解決されるものとする。なお、「既定の Web サイト」とは、IISが標準で作成するWebサイトのことで、通常はホスト・ヘッダ値を指定せずに運用する(詳細は後述)。 |
このとき、クライアントから指定されたURLに対して応答するWebサイトは次のようになる。
URL | 応答するWebサイト |
---|---|
http://www.example.jp/…… | Webサイト1 |
http://bbs.example.jp/…… | Webサイト2 |
http://192.168.1.101/…… | Webサイト2 |
http://example.jp/…… | 既定のWebサイト |
http://www.example.co.jp/…… | Webサイト3 |
http://example.co.jp/…… | Webサイト3 |
http://bbs.example.co.jp/…… | 既定のWebサイト |
クライアントから指定されたURLと、応答するWebアドレスとの対応 URLがいずれのWebサイトにも合致しない場合は、既定のWebサイトが応答する。また、IPアドレスを指定したURLに特定のWebサイトを応答させたい場合は、Webサイト2のようにホスト・ヘッダ値にIPアドレスを指定する必要がある。 |
このように、URLで指定したドメイン部分にホスト・ヘッダ値が合致したWebサイトが応答する。いずれのWebサイトにも合致しない場合は、既定のWebサイトが応答する。
特に注意が必要なのは、各WebサイトにおけるIPアドレス/ポート番号/ホスト・ヘッダ値の組み合わせは、同一のIIS内の全Webサイトを通してユニーク(一意)でなければならない、という点だ。もし複数のWebサイト間で組み合わせが重複するとエラーが発生し、設定したWebサイトが停止する。
もう1つの注意点は、どの組み合わせにも該当しないリクエストを受け付けるWebサイトを用意することだ。さもないと、こうしたリクエストに対してIISはデフォルトでHTTPエラー・コード400(不正な要求)をクライアントに返すだけで、ユーザーに不親切だ。通常はIISが標準で作成する「既定の Web サイト」、すなわちWebサイト識別子が「1」のサイトにこの役割を担わせる。従って、通常のWebサイトは既定のWebサイトではなく、新たに作成した仮想サイトに構築した方がよい。
既定のWebサイトには、IPアドレスを「(未使用の IP アドレスすべて)」、ホスト・ヘッダ値を無指定、ポート番号は全Webサイトで使用しているものを1つずつ組み合わせて設定する。つまり、ポート番号が複数使用している場合は、この組み合わせも複数になる。80番ポートしか使っていない場合は、既定のWebサイトのデフォルト設定(「(未使用の IP アドレスすべて)」/80番ポート/ホスト・ヘッダ値なし)のままでよい。
これにより、どのホスト・ヘッダ値にも該当しない、すなわち予期せぬドメイン名でアクセスされた場合、既定のサイトにリクエストが届くようになる。あとはエラー・ページを表示するなり、別のサイトにリダイレクトするなり、セキュリティ・ポリシーなどに従って既定のWebサイトを設定すればよい。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.