TIPS:WindowsのIISで単一IPアドレスのサーバーに複数のWebサイトを設置・運用する(ホストヘッダー編)Webサーバ/IPアドレス/ポート番号を追加したりすることなく、Webサイトを増設したいことがある。それにはWebサイトごとにホスト・ヘッダ値を設定するという方法がある。WindowsのIISでも、ホスト・ヘッダ値を利用して複数のWebサイトを運用できる。新たに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サイトへのアクセス要求を識別できるということだ。Services(IIS)にも、ホスト・ヘッダ値からWebサイトを識別する機能があり、単一IPアドレスでの複数Webサイトの運用が可能だ。本稿ではその設定方法と注意点について説明する。5.1には、Webサイトを1つしか運用できない制限があるため、そもそも複数のWebサイトは運用できない。ホスト・ヘッダ値そのものは、本稿で説明している手順で設定して利用できる。本稿では、各Webサイトのドメイン名が、IISの稼働するWebサーバのIPアドレスに名前解決されるよう、あらかじめDNSサーバ(DNSゾーン)が設定されているものとする。マネージャ](IISマネージャ)を起動し、対象のWebサイトのプロパティを開く。5.0でも操作方法はほとんど変わらない(設定項目名などが若干異なる程度の違いしかない)。対象のWebサイトのプロパティを開くWebサイトにホスト・ヘッダ値を設定するには、まずIISマネージャでそのWebサイトのプロパティを開く。(1)対象のWebサイトを選んで右クリックする。サイト]タブを選んで、[詳細設定]ボタンをクリックする。サイト]タブで設定する。(2)IPアドレスやポート番号の一部が表示され、ホスト・ヘッダ値は表示されない。IPアドレスやポート番号にしても、これが設定されているすべてとは限らず、詳細は[B]の画面で確認する必要がある。(3)これをクリックする。ホスト・ヘッダ値はIPアドレスおよびポート番号と組み合わせて設定する必要があり、この枠には設定済みの組み合わせが一覧表示される。この組み合わせは1つのWebサイトにつき複数設定できる。新たにこの組み合わせを追加するには、[追加]ボタンをクリックする。[B]IPアドレスとポート番号、ホスト・ヘッダ値の一覧画面ホスト・ヘッダ値は、IPアドレスおよびポート番号と組み合わせて設定する。この組み合わせは複数、設定が可能なので、例えば1つのWebサイトに複数のホスト・ヘッダ値を設定すると、複数のドメイン名で参照できるようになる。(1)ここに、設定済みのIPアドレスとポート番号、ホスト・ヘッダ値の組み合わせが表示される。アドレスすべて)」を意味する。(2)ホスト・ヘッダ値を追加するには、これをクリックする。→[C]へ(3)既存のホスト・ヘッダ値を変更するには、(1)から設定済み項目を選んでから、これをクリックする。サイトの識別の追加と編集]画面が表示されたら、ホスト・ヘッダ値とともにIPアドレスとポート番号を指定して、[OK]ボタンをクリックする。ホスト・ヘッダ値には、ドメイン名に相当するIPアドレスも指定できる。「192.168.1.101」と設定すると、「http://192.168.1.101/」のようにIPアドレスを直接指定したリクエストに応答するようになる。[C]ホスト・ヘッダ値を設定するホスト・ヘッダ値に対して、組み合わせるIPアドレスとポート番号を1対1で指定する。(1)このプルダウン・リストボックスから、割り当てたいIPアドレスを選択する。アドレスすべて)」を選べばよい。(2)ポート番号を記入する。特別なポート番号を利用していない限り、「80」を指定すればよい。(3)ホスト・ヘッダ値、すなわちURLにおけるドメイン名の部分を記入する。(4)設定が済んだら、これをクリックする。設定したら[OK]ボタンをクリックしていって各ダイアログを閉じていく。同じIISにある他のWebサイトについても同様に、ドメイン名に合わせたホスト・ヘッダ値を設定する。上記の手順で、次のように複数のWebサイトに対してホスト・ヘッダ値を割り当てたとする。以下のホスト・ヘッダ値にあるドメイン名はいずれも同一のIPアドレス(192.168.1.101)に名前解決されるものとする。(なし)複数のサイトに対するホスト・ヘッダ値の設定例どのドメイン名も、Webサーバに割り当てられた同一のIPアドレス(192.168.1.101)に名前解決されるものとする。サイト」とは、IISが標準で作成するWebサイトのことで、通常はホスト・ヘッダ値を指定せずに運用する(詳細は後述)。サイト]を選んだところ。ヘッダー値]列に各Webサイトのホスト・ヘッダ値が表示されていることが分かる。1つのWebサイトに複数のホスト・ヘッダ値を設定した場合は一部しか表示されないので要注意。実際、Webサイト2やWebサイト3に設定したはずの「192.168.1.101」「example.co.jp」が欠落している。このとき、クライアントから指定されたURLに対して応答するWebサイトは次のようになる。URL応答するWebサイトhttp://www.example.jp/......Webサイト1http://bbs.example.jp/......Webサイト2http://192.168.1.101/......Webサイト2http://example.jp/......既定のWebサイトhttp://www.example.co.jp/......Webサイト3http://example.co.jp/......Webサイト3http://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サイトが停止する。2」にも設定した直後、F5キーを押して最新の状態を表示させたところ。2は自動的に停止してしまった。これはIISが設定の重複を検出して自動的に当該サイトを停止したことによる。siteのものと重複していることが分かる。(3)重複設定によるエラー・メッセージ。表面的な現象とメッセージの内容が食い違っているが、エラーが発生していることは分かる。1つの注意点は、どの組み合わせにも該当しないリクエストを受け付けるWebサイトを用意することだ。ないと、こうしたリクエストに対してIISはデフォルトでHTTPエラー・コード400(不正な要求)をクライアントに返すだけで、ユーザーに不親切だ。サイト」、すなわちWebサイト識別子が「1」のサイトにこの役割を担わせる。従って、通常のWebサイトは既定のWebサイトではなく、新たに作成した仮想サイトに構築した方がよい。アドレスすべて)」、ホスト・ヘッダ値を無指定、ポート番号は全Webサイトで使用しているものを1つずつ組み合わせて設定する。ポート番号が複数使用している場合は、この組み合わせも複数になる。アドレスすべて)」/80番ポート/ホスト・ヘッダ値なし)のままでよい。これにより、どのホスト・ヘッダ値にも該当しない、すなわち予期せぬドメイン名でアクセスされた場合、既定のサイトにリクエストが届くようになる。あとはエラー・ページを表示するなり、別のサイトにリダイレクトするなり、セキュリティ・ポリシーなどに従って既定のWebサイトを設定すればよい。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。