ISAPI_Rewrite

投稿者: | 2010年3月31日

とあるシステムで、ISAPI_Rewriteなるものを使っている。

Ruby on Rails のアプリを開発して Mongrel で稼働させ、Windows Server (IIS6) 経由で呼び出そうというもの。
なんでこんなことをやりたいかっていうと、IISでWindows統合認証を行い、認証済みのユーザだけがアプリを使え、かつWindows認証アカウントをアプリ側でもアカウントとして利用するという構成をとったため。

最初はIIS6 上で FastCGI を使って RoR を動かそうと思ったんだけど、なんか安定してなさそうなので、IIS を Proxy にしようと。(Apache使えよとかいうつっこみはいったん流して)

IISそのものには Proxy 機能は装備されていないのだが、IIS 用のアドインとして ISAPI_Rewrite というものが Helicon Tech 社から提供されている。これはもともと Apache で言うところの mod_rewrite 相当のURL書き換え機能を提供するもの。

ISAPI_Rewrite には2種類のラインナップがあって、完全フリー版では Proxy はできないのだが、シェアウェア版(45日トライアル版あり。$99くらい)だと Proxy としても使える機能がある。

そこで今回はシェアウェア版を購入して、Proxy として使うことにした。

ダウンロード&インストールは極めて簡単なので省略。
で、Mongrel が http://localhost:3000/ で動いており、これをIIS側の http://localhost/ で受けてポート3000に流す。

設定はIISマネージャのWebサイトプロパティにISAPI_Rewrite設定タブがあるので、そこから設定エディタを開き「RewriteProxy /(.*) http\://localhost\:3000/$1 [A,I,U]」と記述。

文法は mod_proxy準拠(微妙に違うところもあるらしいが)。末尾の鍵括弧内はフラグだが、ここに「A」オプションをつけると、認証したユーザアカウント情報を httpヘッダに付加してくれる。たまにWWWで見かける Apache における方法と違うので、最初これが分からなくてあせった。
(落ち着いてドキュメントを読めばちゃんと書いてあったのだが)

あとライセンスキーの設定方法も最初分からなかったが、README を読んだら書いてあった。
インストール時に引数指定する、設定エディタに書く、の2種類があるようだ。

設定してみたが45日後にちゃんと効いているかちょっとドキドキする。

ISAPI_Rewrite」への2件のフィードバック

  1. こうき

    ライセンスキーの設定方法で「インストール時に引数していする、設定エディタに書く、の2種類あるようだ」とありますが、そちらはどの方法を使っているのでしょうか?

    同じようにIISでmod_rewriteを使いたく、いろいろ調べてたどり着いたのが「ISAPI_rewrite3」です。

    そちらはインストーラーを使ってインストールしているみたいですが、
    こちらはいろいろな理由により、dll形式ファイルをIISのプロパティ「ISAPIフィルター」に設定して使おうと考えています。
    その場合、インストーラーを使わないのでライセンスをどうやって登録するんだとうと疑問に思っていました。
    そこでいろいろ調べた結果、こちらのページが検索にヒットしたしだいです。

    ヒントになりそうなのが「設定エディタに書く」なのです。
    「設定エディタに書く」とは具体的にどうするのか、知っていたら教えていただけないでしょうか。

    宜しくお願いします。

  2. ookawara.com 投稿作成者

    こうきさん、返事たいへん遅くなってごめんなさい。もう解決してしまいましたかね?

    ライセンス設定の話ですが、まず、ISAPI_Rewriteをインストールすると、インストールしたディレクトリのなかに、ISAPI_Rewrite.chmっつうWindowsヘルプファイルが(DLLなどとともに)置かれてます。
    このなかに、元記事で話題にした2通りの方法が書いてあります。

    1)インストール時のコマンドラインオプションで指定する方法

    手動インストールのコマンドラインサンプルを抜粋しました。

    「msiexec /i ISAPI_Rewrite3.msi /qn AcceptEULA=Yes REGISTRATIONCODE=Code REGISTRATIONNAME=Name」

    Codeの部分が、購入したライセンスキーを書くところ(になると思われる)です。

    2)自分で設定ファイルに書く方法

    httpd.conf(DLLと同じディレクトリにあるはず)に

    RegistrationName=Your registration name
    RegistrationCode=REG-CODE-PROVIDED-FROM-HELICON

    を追加します。REG-CODE-PROVIDED-FROM-HELICONの部分が購入したライセンスキーを書くところです。私はこちらの方法で設定しました。

    よろしくどうぞ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です