第9回 強化されたIIS 7.5(後編)Windows Server 2008 R2の真価(3/4 ページ)

» 2010年02月25日 00時00分 公開
[奥主洋( エバンジェリスト)マイクロソフト株式会社]

URL書き換えモジュール


 多くの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の機能である。

Ver.1.1で利用可能なテンプレートとURL書き換え/リダイレクトの設定画面

 書き換えのルールに関しては、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では以下の機能を持っている。

Application Request RoutingモジュールVer.1.0の主要機能

 現在英語版の開発が完了したVer.2.0については上記に加え、新しく以下の機能を持つ。

Application Request RoutingモジュールVer.2(RC版)の主要機能

 これにより、リバース・プロキシ、負荷分散サーバ、キャッシュ・プロキシなどのシナリオに対応できることになる。例えばリバース・プロキシの具体的な設定例としては下記の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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。