インターネット Web サーバー
構築ガイドライン
【ドラフト版】
~ 第 4 章:さまざまなサーバーの設定
※本ガドランは各章の先行ドラフト版公開を行い、全章の公開後、正式版文書としてまとめを行 い、再度公開します。 第 1 版 2010/04 マクロソフト株式会社 免責事項: このドキュメントの内容は情報提供のみを目的としており、明示または黙示に関わらず、これらの情報についてマ クロソフトはいかなる責任も負わないものとします。このドキュメントに記載されている情報 (URL 等のンターネット Web サトに関する情報を含む) は、将来予告なしに変更することがあります。お客様がこのドキュメントを運用した結果の 影響については、お客様が負うものとします。別途記載されていない場合、このドキュメントで例として挙げられている企業、 組織、製品、ドメン名、電子メール ゕドレス、ロゴ、人物、地名、およびベントは、架空のものです。それらが、いずれ かの実際の企業、組織、製品、ドメン名、電子メール ゕドレス、ロゴ、人物、地名、あるいはベントを指していることは なく、そのように解釈されるべきではありません。お客様ご自身の責任において、適用されるすべての著作権関連法規に従っ たご使用を願います。第 4 章 さまざまなサーバーの設定
IIS では Web サト、仮想デゖレクトリ、およびゕプリケーションを作成することで、サーバー 内の任意のフォルダをンターネットに公開することができます。 また、Web サトのバンドの設定を使用すると、一台のサーバーで複数のドメンをホストし、 複数の IP ゕドレスを使用して Web サーバーを運用することができます。 こういった IIS のさまざまな設定を使用することで、物理マシンの台数にとらわれないサーバーの 運営が可能になります。IIS ユーザーごとに公開ディレクトリをつくるには
Web サーバーを、複数のユーザーが共有して使用する場合、コンテンツの公開場所を、ユーザー 毎に分けたほうが良い場合があります。 たとえば、各個人のホームページの開設場所として使用する場合や、単純なンターネット上の個 人的なストレージとして使用する場合などです。 IIS 7 ではサーバー上の任意のフォルダを公開できるので、ユーザーごとのフォルダさえ用意され ていれば、仮想デゖレクトリや Web サトとしてそのフォルダを追加することができます。 Windows と IIS の機能が提供するユーザーごとに分離されたフォルダは、以下のようなものがあ ります。Windows で提供されるユーザーごとのフォルダ
Windows では、既定で、ログオンしたユーザーゕカウントごとに、ユーザープロフゔル フォル ダが作成されます。このフォルダの位置は Windows のバージョンによって異なりますが、Windows Vista、Windows 7、Windows Server 2008 では c:\Users フォルダの下にユーザーゕカウント名と同じ名前のフォ ルダが作成されています。
サーバーローカルにログンするユーザーに対して、Web サーバーの機能を提供する場合、この ユーザープロフゔル フォルダ内に、ユーザー向けの公開デゖレクトリを設けるのも一つの考え方で はありますが、このフォルダの中にはデスクトップや、ドキュメントの内容が含まれているためセキ ュリテゖを深く考慮する必要があります。
そのほか、Windows ドメン環境では、Active Directory の機能を使用して、ドメンユーザ ー個別のホームデゖレクトリを指定することができます。
ホームデゖレクトリが指定されると、サーバーローカル、クラゕント問わず、ドメンユーザー の作業デゖレクトリはホームデゖレクトリに指定された場所になります。
デスクトップゕプリケーションのフゔルの保存場所なども既定でホームデゖレクトリの位置にな るので、公開デゖレクトリをホームデゖレクトリ下に作成する場合は、意図しないフゔルが Web に公開されないよう注意する必要があります。
FTP ユーザーの分離機能との組み合わせ
FTP 7 には、ログンしたユーザーゕカウント名と同じ名前の物理デゖレクトリまたは仮想デゖレ クトリに 、FTP ユーザー セッションを分離する機能が提供されています。ユーザーは自分の FTP ル ートの場所のみを確認することができ、物理デゖレクトリまたは仮想デゖレクトリのツリーの上位デ ゖレクトリを参照することはできません。 FTP ユーザーのホームデゖレクトリは、仮想デゖレクトリと同じように任意の位置の物理フォルダ を指定することができるので、オペレーテゖングシステムに影響を与えない位置に構成することがで きます。 また、FTP のホームデゖレクトリは、ActiveDirectory のホームデゖレクトリのように他のサービ スの影響を考慮する必要も、ほとんどの場合ありません。ディレクトリごとの設定ファイルを使用するには
IIS 7 では、Web サトの構成情報は、%system%\System32\inetsrv\config 内の設定フ ゔルの内容を継承しており、Web サト固有の情報は Web サトとして指定された物理フォルダ 内の Web.config フゔルで保持されます。
Web サト以下の仮想デゖレクトリ、ゕプリケーションは、Web サトの Web.config フゔ ルの内容を継承し、個別の情報 (親関係にある Web サトの情報とは異なる、独自に設定した部分 の情報) は同じくそれぞれの物理フォルダ内の web.config フゔルに保持されます。 なお、仮想デゖレクトリ内の Web.config フゔルは、IIS 既定の設定と仮想デゖレクトリの設定 に違いが生じると自動で作成されます。
Web.config の編集
各デゖレクトリの設定を行うのに、Web.config フゔルを直接編集する必要はありません。 IIS マネージャーの左側にあるツリービューで目的のデゖレクトリを選択し、[機能ビュー] で設定 を行うことで、その内容が Web.config フゔルに保持されます。 なお、[機能ビュー] に表示される操作項目は、ツリービューで選択されているオブジェクトの種類 により変化します。図:IIS 管理ツールのツリービューと機能ビュー
複数のサーバーに見せるには
IIS は 1 台の Web サーバーを複数のサーバーであるかのように見せることができる、仮想ホス トと呼ばれる機能を持っています。仮想ホストを構成すると、1 台の Web サーバーに対して、ホス ト名の異なる複数の URL を使用してゕクセスできるようになります。 1 台のサーバーが複数の IP ゕドレスを持っている場合には、IP ゕドレスごとにそれぞれ異なる Web サーバーであるかのように見せることもできます。また、同一のデゖレクトリを別々のホスト として公開するように構成することもできます。名前ベースの仮想ホスト
標準的な Web ブラウザーでは、Web サトにゕクセスする際、リクエスト内の Host : ヘッダー にゕクセス先のホスト名を指定することが必須となっています。 Host: ヘッダーに設定されたホスト名から、ゕクセス先を識別する機能が、名前ベースの仮想ホス ト機能です。名前ベースの仮想ホスト機能を使用することで、Web サーバーに割り当てられた IP ゕ ドレスが 1 つでも、ホスト名の異なる複数の URL でゕクセスできるよう、サーバーを構成すること ができます。
IP ベースの仮想ホスト
サーバーが複数のネットワークカード (NIC) を持っており、それぞれに異なる IP ゕドレスが割 り当てられている場合、IP ゕドレスごとに、個別の仮想ホストを設定することができます。これが IP ベースの仮想ホスト機能です。IP ベースの仮想ホスト機能と、名前ベースの仮想ホスト機能を組み合 わせることで、柔軟なサト構成を行うことができます。仮想ホストの作成
例として ドメン名 www.contoso.com を IP ゕドレス 192.168.7.7 でホストする手順を 以下に示します。 1. IIS マネージャーを起動します。 2. IIS マネージャーの画面左のツリービューより [サト] を選択します。 3. マウスの右ボタンをクリックし、表示されたコンテキストメニューより [Web サトの追加] を選択します。 4. [Web サトの追加] ダゕログボックスが表示されるので各項目を以下のよう設定します。項目
値
サト名 contoso (任意のもの) 物理パス (Web サトとして公開するフォルダの物理パス) IP ゕドレス 192.168.7.7 (※) ホスト名 www.contoso.com (※) 取り付けられている NIC に割り振られた IP ゕドレスがドロップダウンリストボックスに 表示されるので選択します。IP ゕドレスを指定すると、指定された IP ゕドレス以外へのリクエスト に対してはレスポンスを返しません。たとえば localhost (127.0.0.1) へのリクエストに対してはレ スポンスを返しません。 使用する IP ゕドレスを限定しない場合は “未使用の IP ゕドレスすべて” を選択します。Web サ トの IP ゕドレスを限定しなければならない明確な理由がある場合を除き、この設定は “未使用の IP ゕドレスすべて” で通常は問題ありません。図:Web サトの追加ダゕログボックス 5. [OK] ボタンをクリックしてダゕログボックスを閉じます 上記の設定で指定したホスト名を、ネットワーク内のすべてのクラゕントで使用可能にするには、 DNS サーバーに、ホスト名と IP ゕドレスをひもづける名前解決の設定を行う必要があります。 ただし、簡単にテストを行いたいのであれば、クラゕントマシンの hosts フゔルにホスト名と IP ゕドレスを記述することで、そのクラゕントマシンでのみ有効な名前解決の設定を行うことがで きます。 名前解決を行うための hosts フゔルの設定手順は以下の通りです。 1. テキストエデゖタを “管理者としで実行” します。 2. テキストエデゖタで以下のフォルダ内にあるフゔル hosts をオープンします。 C:\Windows\system32\drivers\etc
3. hosts フゔル内のコメント “For example” に従い、以下のように IP ゕドレスとホスト名 を記述します。
192.168.7.7 www.contoso.com 4. hosts フゔルを上書き保存してテキストエデゖタを終了します。 5. Web サトとして指定した物理フォルダに、以下の内容で index.htm を作成して配置してく ださい。 Index.htm ======= <html> <head> <title>既定のページ</title> </head> <body> <h2>Hello World</h2> </body> </html> 6. ブラウザーを起動して http://www.contoso.com にゕクセスし、ブラウザーに “Hello World.” と表示されるのを確認してください。 うまくいかない場合は、ブラウザーが Proxy を使用しないように設定してください。
仮想ホストに別名をつけるには
Web サトには複数の仮想ホストを指定することが可能です。この機能を使用すると、一部を省 略したゕドレスや、まったく異なるゕドレスを指定することができます。たとえば、www.contoso.com でも contoso.com でもゕクセス可能な Web サトを構成する ことが可能です。 Web サトに仮想ホストを追加するには、以下の手順で設定を行います。 1. IIS マネージャーを起動します。 2. IIS マネージャー左のツリービューより、目的の Web サトを選択します。 3. マウスの右ボタンをクリックし、表示されたコンテキストメニューより [バンドの編集] を 選択します。
図:サト バンド ダゕログボックス 4. [サト バンド] ダゕログボックスが表示されるので、同ダゕログボックスの [追加] ボ タンをクリックしします。 5. [サトバンドの追加] ダゕログボックスが表示されるので各項目を以下のように設定し ます。
項目
値
IP ゕドレス 192.168.7.7 (※) ホスト名 contoso.com ※IP ゕドレスを分けたい場合は別な IP ゕドレスを指定します。6. [OK] ボタンをクリックしてダゕログボックスを閉じます。 以上で仮想ホストへの別名の追加は完了です。 hosts フゔル、もしくは DNS サーバーで名前解決のための設定を行い、ブラウザーから以 下の URL にゕクセスし、index.html の内容が表示されることを確認してください。 http://contoso.com
コラム: Web ブラウザーのキャッシュ機能を制御するには
一般的な Web ブラウザーでは、閲覧したページをローカルのデゖスク上にキャッシュとして 保存しています。そして、その後再び同じページを閲覧する際には、キャッシュの内容を表示す ることで、コンテンツの取得にかかる処理や時間、通信コストを軽減します。 ただし、リクエストの際には、キャッシュの日付を Web サーバーに送信しており、キャッシ ュされた日付より後のコンテンツがあればレスポンスするように Web サーバーにリクエスト します。キャッシュのしくみ
Web ブラウザーは、リクエストの際 if-Modified-Sine: ヘッダーを使用してキャッシュの 有効期限を Web サーバーに通知します。Web サーバーは同ヘッダーを受信すると、リクエス トされたフゔルの更新日を確認し、指定された日付よりも以前の場合には、フゔルが変更さ れていないことを示すステータス 304 Not Modified を返します。(このとき、フゔルの内 容は送信されません。)Web ブラウザーはステータス Not Modified を受け取ると、ローカルりデゖスク上に保存し てあったキャッシュを表示します。
サーバーからの制御
コンテンツの更新日の設定 サーバーからのレスポンスが html や jpeg などの静的なコンテンツであった場合、レスポン スには更新した日付を表す Last-modified: ヘッダーが付加されています。Last-Modified: ヘ ッダーがない場合には Web ブラウザーはキャッシュを行いません。キャッシュの有効期限の設定と無効の設定 キャッシュの有効期限を設定するには Chache-Control: ヘッダーに ”max-age=” とい う書式で秒数を指定し、キャッシュ無効を無効にするには、ヘッダーに “no-cache“ という値 を指定します。具体的な書式は以下の通りです。 キャッシュの有効期限設定 Chache-Control:max-age=(秒) キャッシュの無効化 Chache-Control: no-cache これらヘッダーを使用したコンテンツの有効期限の制御も、IIS 7 であれば管理ツールの GUI を使用して簡単に設定することができます。 具体的な手順は以下のとおりです。 1. IIS マネージャーを起動します。 2. IIS マネージャーの画面左のツリービューより、目的の Web サト、もしくは公開デゖレ クトリを選択します。 3. [公開ビュー] から [HTTP 応答ヘッダー] ゕコンをダブルクリックします。 4. [HTTP 応答ヘッダー] の設定画面が標示されるので、画面右の [操作] パネルから [共通 ヘッダーの設定] リンクをクリックします。 5. [HTTP 共通応答ヘッダー] ダゕログボックスが表示されるので、[期限切れの Web コン テンツ] チェックボックスにチェックをつけ、コンテンツの有効期限を設定します。
6. [OK] ボタンをクリックしてダゕログボックスを閉じます。 以上で、IIS7 でのキャッシュの有効期限設定の作業は完了です。 ただし、実際の動作では、ブラウザー側の設定が優先されるので、キャッシュの動作をサーバ ー側で完全に制御できるわけではありません。 HTML での制御 HTML の meta タグにもキャッシュをコントロールするための設定が用意されています。 キャッシュの有効期限の設定
<meta http-equiv=”Expires” content=”Wed, 1 April 2010 00:00:00 GMT”>
キャッシュの無効化
<meta http-equiv=”Pragma” content=”no-cache” /> <meta http-equiv=”Cache-Control” content=”no-cache” />