IISのApplication Request Routingを使って、Aipo(Tomcat)とDjangoを振り分ける

Aipoが動作している環境に、IIS + Djangoを同居させる機会がありましたので、メモを残します。

 
Aipoは

  • Tomcatのポート80で動作
  • http://<ホスト名>/aipoにてアクセス

という形で動作していました。

また、Djangoは、

  • IISでホストし、ポート9999で動作
  • http://<ホスト名>:9999/djangoにてアクセス

という形での動作を予定しています。

 
同居させる際の条件は

  • 既存のAipoの設定は変更しない
  • Aipoは、http://<何らかのホスト名>/aipoでアクセスしたい*1
  • Djangoは、http://<何らかのホスト名>/djangoでアクセスしたい
  • <何らかのホスト名>は、現在のAipoのホスト名と異なっていても可

でした。

 
何かよい方法がないか調べてみたところ、IISのApplication Request Routing(以下、ARR)をリバースプロキシとして使ってみるのが良さそうでした。

本当は1台で完結させたかったのですが設定がうまくできなかったので、今回は2台構成で設定しました。

 

環境

Aipo端末

 

ARRを入れてリバースプロキシとして動作する端末

 

流れ

ARRのインストール

IISはセットアップ済という前提で設定作業を進めます。

Application Request Routingは依存関係があったので、うまいこと解決してくれるWeb PIを使ってインストールします。

Web PIのサイトから、現在の最新版5.0をダウンロードして実行します。
Download the Microsoft Web Platform

Web PIからARRを検索すると、3.0が見つかったため、インストールします。

 

IISにて、ARRのProxyの有効化

以下の流れで行います。

  1. IISマネージャーを起動
  2. ホームにApplication Request Routing Cacheをダブルクリック
  3. 右の操作ペインより、Server Proxy Settings...を選択
  4. 中央ペインのEnable proxyにチェックを入れ、右の操作ペインの適用をクリック
  5. 「変更内容は正常に保存されました。」が右の操作ペインに表示されることを確認

 

URL書き換えの追加

Aipo用、Django用、Djangoの静的ファイル用の計3エントリを追加します。

  1. IISマネージャーのホームにあるURL書き換えをダブルクリック
  2. 右の操作ペインの規則の追加をクリック
  3. 受信規則の空の規則を選択して、OKボタンを押す

より、以下の内容で追加を行います。

なお、デフォルト値から変更した部分を<値>で表示しています。

 

Aipo用
項目
名前 Aipo
要求されたURL パターンに一致する
使用 正規表現
パターン (aipo.*)
大文字と小文字を区別しない チェックする
アクションの種類 書き換え
URLの書き換え http://192.168.0.1/{R:0}
クエリ文字列の追加 チェックする
後続の規則の処理を停止する チェックしない

 

Django
項目
名前 Django
要求されたURL パターンに一致する
使用 正規表現
パターン (django.*)
大文字と小文字を区別しない チェックする
アクションの種類 書き換え
URLの書き換え http://192.168.0.1:9999{R:0}
クエリ文字列の追加 チェックする
後続の規則の処理を停止する チェックしない

 

Djangoの静的ファイル用
項目
名前 DjangoStatic
要求されたURL パターンに一致する
使用 正規表現
パターン (static.*)
大文字と小文字を区別しない チェックする
アクションの種類 書き換え
URLの書き換え http://192.168.0.1:9999{R:0}
クエリ文字列の追加 チェックする
後続の規則の処理を停止する チェックしない

 

動作確認

以上より、

  • http://arr/aipo で、Aipoへアクセス
  • http://arr/djangoで、Djangoアプリへアクセス

とすることができました。

 

参考

ARRまわり

 

別の端末から、Aipo端末のIISマネージャーの設定を変更したいとき

IIS Manager for Remote Administrationを使えば良さそうでした。
山市良のえぬなんとかわーるど: IIS 7.5 対応の Windows 7 向け IIS マネージャー

Windows7 x64の場合、Inetmgr1.2\inetmgr_amd64_ja-JP.msiをインストールします。
Download IIS Manager for Remote Administration 1.2 from Official Microsoft Download Center

*1:今回はAipo7系ですが、Aipo8系だと「http://何らかのホスト名/」でのアクセスになるようです。参考:アップデート方法(Windows版) - ドキュメント|無料グループウェア「アイポ」