Windows Azure + ARR で勝手キャッシュ・リバースプロキシサーバーを構築する

前回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さんへコンタクトを取っていただくのもよいと思います。

WCF Data Services の続き

前回のPOSTで書き忘れたこと。

インターセプターを使えば特定の列だけ値を変える等できます。OData and Authentication – Part 7 – Forms Authentication にも記載されていますが、たとえば認証されているときだけセンシティブな情報を返すとか。

認証ユーザーやロールに応じて1つのWCF Data Services で柔軟に操作範囲を変えたりできるのはすごく便利ですね。

あと忘れてましたがASP.NET開発環境だとうまくフォーム認証が動きませんでした。(.adxが見れない?)このあたりあまり情報なくてちょっと諦め気味…
面倒だけどデバッグはIISのワーカープロセスにアタッチする等したほうがいいのかも…?
またSQL Serverへの接続は手抜きですが、アプリケーションプールのユーザー等にアクセス権限無いと無駄に怒られますので注意。

最後に追加でいろいろリンクを置いておきます。

WCF Data Services で フォーム認証を利用する

ちと調べてて悩んでたので一応吐き出しておきます。

WCF Data Services を使うとOData形式等で強力なデータ連携が可能になります。
特に Entity Framework や LINQとの相性は抜群です。

でもむやみやたりにデータ公開したくないわけで。特にクラウドに置いたりする場合は。
じゃやっぱり認証かけたいよね、ということで今回は以下のケースで考えてみます。

  • 認証は必要だけど、最初だけの認証にしたい
  • クライアントアプリケーション内で(プログラムで)処理したいので、最初の認証以降はプログラム内で処理したい
  • フェデレーションもいいんだけど認証プロバイダも弄りたいというかカスタム認証プロバイダ使いたいです

イントラネット等でWindows統合認証が使えるならこんな苦労はないのかも知れませんが、プログラム内から操作する方法だと取れる手法は限られてきます。

で、今回はお手軽にフォーム認証を使って Cookie ベースで制限をかけたいと思います。(まぁなんというか、やってることは OData and Authentication – Part 7 – Forms Authentication と変わりません。)

※ Cookie ベースならまぁローカルに保存してても許してくれそうですし。

続きを読む

Windows Azure で Live Smooth Streaming をやってみる

さて 前回の投稿の通り、Startup Task の使い方もわかったので、実際にやってみようと思います。
今回はせっかく Silverlight Firestarter で発表もあった Azure での IIS Media Services 4.0 でも試してみようと思います。

※手順的にまだだいぶイレギュラーなところもあります。。。あくまで参考程度に。

続きを読む

MS10-070 と URIセグメント長

少し前に話題になりました [MS10-070] ASP.NET の脆弱性により、情報漏えいが起こる の件でちょこっとだけ。

この脆弱性そのものに対する修正パッチはすでにリリースされているのですが、このパッチを適用するとURLセッションで使われるセッションキー長がURIセグメント長の制限値を超えてしまい、Bad Requestになっちゃうという、別の問題が表面化したようです。

続きを読む

Windows Azure Tools for Visual Studio 1.2 でIIS設定漏れ

Windows Azure Tools for Visual Studio 1.2 を使って開発をする際に開発PC(Windows 7)のIIS7のパッケージ追加漏れが原因で.css等の静的コンテンツが見れないという話題があがってましたので、そんな漏れが無いようにパッケージインストーラー使ったコマンドラインを起こしました。

start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-Performance;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-Security;IIS-RequestFiltering;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI;WCF-HTTP-Activation;

上記を一行で管理者権限のあるコマンドプロンプト等で実行するとパッケージインストーラーが裏でごりごりインストールしてくれます。
結果はイベントログのSetupログに出るので、もし入らない場合はログ参照。

また参考にした@ITの記事では最低限4コンポーネント(任意が1つ)ですが、依存関係もろもろありますので上記のようなパッケージになりました。(IIS-ASPとかIIS-CGIは余分と思われますが。)

参考:

おかえり、はやぶさ

いろんな思いも、情熱も、希望ももらった。分野は違えど技術者の端くれとして今度は与える側になりたい。いつか。

via DHJJ [Hatsune’s Journal Japan] blog

はやぶさ関連のエピソードはどれも興奮して泣きそうになるね。おいらは この記事「はやぶさよ還れ(その1)」(くねくね科学探検日記)を読んではやぶさを知ったにわかなんだけど、それでもいろんな思いをもらえたよ。

鹿野司さんの書くコラムは昔から好きで、ITやらに興味を持つきっかけになったようなものなんだけど、やっぱりウォッチしきれてなかったんだねぇ。だいぶもったいないかな。でもこれからでも遅くないよね。何するにしても。

※鹿野司さんのコラムの初見はMSXマガジンで連載してた人工知能うんちく話。この記事のおかげでスタートレックやら人工知能やらパソコン、PC、ITに興味持つようになりました。原点ですね。

 

続きを読む