前回Squidを利用してキャッシュ・リバースプロキシサーバーを構築しましたが、Squid版では以下の問題がありました。
- Locationヘッダ等によるリダイレクトを抑制できない
- 絶対パスのリンクを書き換えられない
これらはURLのRewriteをリバースプロキシな処理の中で行えば解決しますが、外部公開サイトに対してはいろいろグレー+Squidだと少し面倒でした。
さて代替方法として(緊急で対応する必要もだいぶ減ったので)IIS+Application Request Routing 2.0を使用してキャッシュ、リバースプロキシ、URL Rewriteを行いたいと思います。
※今回実装にあたってはMicrosoftさんを始めJAZUな面々、多数の方にご協力頂きました。ありがとうございます。
デプロイパッケージを作成するにあたって実装している点は以下の通りです。
- WebPICmdLineツールを使用してStartup TasksでARRのインストール(依存するWeb Farm Frameworkもインストール)
- 設定の簡略化のためにApplicationHost.configを直接書き換え(そのためにRoleのEntryPointが特権で動作するように設定)
コードはやっつけ仕事もいいとこですね。
成果物はこちらからダウンロードください。
利用方法は上記パッケージをダウンロードしてDeployPackageフォルダにある .cscfg のインスタンス数や対象URL、公開URLを修正してデプロイするだけです。
今は1:1の書き換えしか対応できません。もし1つのサーバーで複数展開する場合は現状のコードでは対応できませんので、RDPの設定をして頂き、展開後手動でIIS+ARRの設定を行ってください。
非常時用ですのでこんな感じです。
CDNを利用する場合や、より細かな対応、本格的にAzure化する為にコンテンツホルダーとの調整が必要な場合等は こちらのサイト を参考にして頂き、Microsoftさんへコンタクトを取っていただくのもよいと思います。