第9回 強化されたIIS 7.5(後編):Windows Server 2008 R2の真価(3/4 ページ)
IIS 7はモジュールの追加で機能を大幅に拡張できる。FTPやWebDAV、URL書き換え、SEO対策など、代表的な追加機能を解説。
多くのApacheモジュールの中で、いままでのIISが同様の機能を標準で実装できていなかったものとして「mod_rewrite」(これを利用すると、アクセスされたURLを書き換えて、例えば新サイトへ誘導したり、別ページへアクセスさせたりできる)がある。オープンソースのアプリケーションでは、mod_rewrite に依存して動作するものも多い。その結果、「XXXアプリケーションを利用するにはApacheベースのWebサーバを使うしか選択肢がない」という状況になることがあった。IIS開発チームではこの状況に対処するため、モジュール開発が容易になったIIS 7において、最初に開発に取り掛かったモジュールの1つがこのURL書き換えモジュール(URL Rewriteモジュール)である。
URL書き換えモジュールはVer.1.0を経て、現在はVer.1.1が提供されている。このモジュールの機能については以下のページを参照していただきたい。以下のページの左側にあるインデックス・ツリーのうち、「URL 書き換えモジュール 2.0 の使用」より下にあるものがVer.2.0の機能である。
書き換えのルールに関しては、Apacheのmod_rewriteのものをインポートする機能も有している。
最新の開発状況としては、現在Ver.2.0がRC版(製品出荷直前の候補版)になっているが、まだ日本語版は提供されていない。Ver.2.0については主にサーバからの送信レスポンスに対する書き換え機能を中心に以下の機能が追加されている。
- 規則ベースの応答書き換えエンジン
- 特定のHTMLタグの内容の中での書き換え
- 送信ルールの前提条件
- サーバ変数およびHTTPヘッダの設定
- 複数の規則条件にわたるキャプチャ・グループの追跡
- 書き換えられたURLのログ
「IIS 7 - URL Rewrite Module」フォーラムでの注目トピック
■[トピック]ホスト・ヘッダをワイルドカード指定したルール
簡易的な振り分けをURL書き換えで実装したいケースで、後述のApplication Request Routingモジュールを一緒に利用した方法を紹介した例になっている。ホスト・ヘッダを指定していないサイトに一度リクエストをプロキシ(代理)として受け取らせ、そこのルールでほかのサイトに振り分けるように設定できる。
■[トピック]URL書き換えモジュール2.0に欲しい機能
設計段階で、オープンな場所で希望機能を募集するという、最近のマイクロソフトらしい取り組みをしている。これもオープンソース関連の施策に多く携わっているRuslan Yakushev氏ならではの試みでもある。提案に対してほかの参加者が意見を述べていて、いろいろなことで多くの人が悩んでいることが分かって興味深い。
■Application Request Routingモジュール
Application Request Routingモジュール(略してARR)は、可用性の向上とセキュアなWebサーバ・ファームの運用を目的として開発されている拡張機能である。URL書き換えだけでは実装できないルーティングや基本的なアプリケーション層の負荷分散機能をも持つ、無償ながらもパワフルな拡張機能といえるだろう。なお、前出のURL書き換えモジュールに依存しているので、ともにインストールが必要になり、バージョンによってその組み合わせが変わるので注意が必要だ。
URL書き換えモジュール同様、ARRについてもバージョンの変遷があるので機能差に注目してみたい。すでに日本語版も出荷されたVer.1.0では以下の機能を持っている。
- HTTPに基づくルーティングの決定
- 負荷分散アルゴリズム
- 健常性の監視
- クライアント・アフィニティ
- ホスト名アフィニティ
- 複数のサーバ・グループの管理
- Application Request Routing モジュールの使用(マイクロソフトTechNetサイト)
現在英語版の開発が完了したVer.2.0については上記に加え、新しく以下の機能を持つ。
- ディスク・ベースのキャッシングおよび階層管理
- キャッシュ・プロキシ・ノードとして機能
- 応答を処理しながらのキャッシング(Live Smooth Streamingのキャッシュ可能)
- Application Request Routing Version 2(マイクロソフトTechNetサイト)
これにより、リバース・プロキシ、負荷分散サーバ、キャッシュ・プロキシなどのシナリオに対応できることになる。例えばリバース・プロキシの具体的な設定例としては下記のIIS開発チームのWon Yoo氏のブログが参考になる。
「IIS 7.0 - Application Request Routing (ARR)」フォーラムでの注目トピック
■[トピック]ARR経由のリクエストで元クライアントのIPアドレスでログに記録してほしい
負荷分散やルーティングを行っているとよく直面する話である。ARRでも同様で、これを実現したい人が出てくるのは必然だろう。この投稿ではARRだけでは実現できないこと、IIS開発チームAnil Ruia氏がこれを実現するARR Helperモジュールをブログで掲載したことなどが記載されている。まさにIIS 7のモジュール化のなせる技である。
■[トピック]Apacheとの間でのSSLハンドシェイクに問題 - 502エラー
フォーラムなのでこういう実践的な話題が結構目立つ。実はまだ解決していないようだが、RC版での動作では証明書にサーバ名を期待しているようで、サイト名が入っているとエラーになるという問題がある。これは最終的な出荷版では修正されるはずだ。また、開発チームはARRサーバとコンテンツが配置してあるサーバ間にSSLを掛けること自体に関して、パフォーマンス・コストを問題提起している。
Copyright© Digital Advantage Corp. All Rights Reserved.