名前ベースのバーチャルホストをIISで実現する

はじめに

この記事の主なターゲットは「Linuxは分かるけどWindowsは分からない」人向けです。

1つのWebサーバで複数のWebサイトを構成する場合、

  • サーバに複数のIPアドレスを割り当てて、アクセスされたIPアドレスによってWebサイトを分ける「IPベースのバーチャルホスト」
  • 1つのIPアドレスしか持たずに、アクセスされたURLによってWebサイトを分ける「名前ベースのバーチャルホスト」

の2つの方法があります。IPアドレスを明確に分けなければいけない理由が特にない場合には、名前ベースのバーチャルホストを使うことが多いかと思います。

Apacheの場合は、/etc/httpd/conf.d/の下にWebサイト毎の設定ファイルを作成し、VirtualHostディレクティブによって実現します。さて、ではWindows+IISではどう実現するのでしょうか?というのがこの記事のスタート地点であり、「超簡単でした」というのがゴール結果です。

やってみる

今回LaunchしたEC2のAMIは「Windows_Server-2012-R2_RTM-English-64Bit-Base-2014.09.10」です。

まず、IISを役割追加しただけの状態だと、以下のようにデフォルトサイトだけが存在します。

メモ_—_Public_IP_54_64_251_29_と_Windows_7_x64

この状態でWebブラウザでEIPにアクセスすると、デフォルトWebサイトが表示されます(index.htmlを手動で作って分かりやすいようにしています)

Default_Site

それではWebサイトを追加してみましょう。左ペインの[サイト]を右クリックして[Webサイトの追加]をクリックします。

Windows_7_x64

[Webサイトの追加]画面が表示されます。各入力値を埋めていくのですが、この際に[バインド]-[ホスト名]欄に、アクセスされるURLのホスト名を入力します。 これがApacheでの「NameVirtualHost」に相当します。最後に[OK]ボタンをクリックします。

Windows_7_x64 2

[IISマネージャー]画面に戻ると、Webサイトが追加されています。

Windows_7_x64 3

で、追加したWebサイトのホスト名をDNSに登録し、その名前でアクセスしてみると、ちゃんと追加したWebサイトのほうにアクセスされることが分かります。

Test_Site

超簡単!

まとめ

Apacheやnginxに慣れていると、いちいちGUIで設定しなければいけないIISのほうが面倒臭いと思いがちですが、GUIがきちんと用意されているというのはメリットでもあります。Webサイトの追加がGUIから簡単に出来るというのはIISの良いところでは無いでしょうか。