インターネット 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 の機能を使用して ドメンユーザー個別のホームデゖレクトリを指定することができます ホームデゖレクトリが指定されると サーバーローカル クラゕント問わず ドメンユーザーの作業デゖレクトリはホームデゖレクトリに指定された場所になります 1
デスクトップゕプリケーションのフゔルの保存場所なども既定でホームデゖレクトリの位置にな るので 公開デゖレクトリをホームデゖレクトリ下に作成する場合は 意図しないフゔルが 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 フゔルに保持されます なお [ 機能ビュー ] に表示される操作項目は ツリービューで選択されているオブジェクトの種類により変化します 2
図 :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 ベースの仮想ホスト機能と 名前ベースの仮想ホスト機能を組み合わせることで 柔軟なサト構成を行うことができます 3
仮想ホストの作成 例としてドメン名 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 ゕドレスすべて で通常は問題ありません 4
図 :Web サトの追加ダゕログボックス 5. [OK] ボタンをクリックしてダゕログボックスを閉じます 上記の設定で指定したホスト名を ネットワーク内のすべてのクラゕントで使用可能にするには DNS サーバーに ホスト名と IP ゕドレスをひもづける名前解決の設定を行う必要があります ただし 簡単にテストを行いたいのであれば クラゕントマシンの hosts フゔルにホスト名と IP ゕドレスを記述することで そのクラゕントマシンでのみ有効な名前解決の設定を行うことができます 名前解決を行うための hosts フゔルの設定手順は以下の通りです 1. テキストエデゖタを 管理者としで実行 します 2. テキストエデゖタで以下のフォルダ内にあるフゔル hosts をオープンします C:\Windows\system32\drivers\etc 3. hosts フゔル内のコメント For example に従い 以下のように IP ゕドレスとホスト名を記述します 5
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. マウスの右ボタンをクリックし 表示されたコンテキストメニューより [ バンドの編集 ] を選択します 6
図 : サトバンドダゕログボックス 4. [ サトバンド ] ダゕログボックスが表示されるので 同ダゕログボックスの [ 追加 ] ボタンをクリックしします 5. [ サトバンドの追加 ] ダゕログボックスが表示されるので各項目を以下のように設定します 項目 値 IP ゕドレス 192.168.7.7 ( ) ホスト名 contoso.com IP ゕドレスを分けたい場合は別な IP ゕドレスを指定します 図 : サトバンドの追加ダゕログボックス 7
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 ブラウザーはキャッシュを行いません 8
キャッシュの有効期限の設定と無効の設定キャッシュの有効期限を設定するには 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 コンテンツ ] チェックボックスにチェックをつけ コンテンツの有効期限を設定します 図 : 共通 HTTP 応答ヘッダーの設定ダゕログボックス 9
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 /> 10