Azure Blob + Full IIS の Web ロールで

 

Azure Blob ストレージを簡易 Web サーバーとして利用するドキュメントを公開させていただきましたが、IIS 機能をサポートしているWeb ロールと組み合わせることで利用者のユーザビリティーを向上させることができます。

Web.config ファイルの <system.webServer> に以下の行を追加しアップします。

<system.webServer>

<httpRedirect enabled="true" destination="https://(アカウント名).blob.core.windows.net/index.htm" exactDestination="true" childOnly="false" httpResponseStatus="Permanent" />

</system.webServer>

これは、IIS の HTTPリダイレクトを用いて Web サイトへの要求を Blob へ転送するものです。IIS の管理ツール(IIS Manager) では以下のような設定を行います。

image

利用者は、https://(DNS名).cloudapp.net とブラウザで入力すると、ブロブのURLに転送されます。なお、この設定はパス指定 (https://(DNS名).cloudapp.net/a/b.htm ) を無視して、リダイレクト先に指定された URL に転送されます。

Blob の Web サーバー的な機能は、既定のドキュメント(デフォルトドキュメント index.html 等) を返却するような Web サーバーの機能を持ち合わせてません。また、カスタムドメインを割り当てたときも、レジストラの DNS で root ドメインからサブドメインへの転送設定(例 example.com –> www.example.com)ができないこともあるため、ユーザビリティの向上にはいろいろなアイディアを使うことにになります。

この記事では、Web ロールの持つ IIS の機能と Blob の持つ迅速性を組み合わせるアイディアです。

実現方法として ASP.NET のコードで、Server.Tranfer や Response.Redirect を使う方法や、URL Rewrite Module for IIS を用いる方法等、また URL が変わる違和感を利用者が持つかもしれませんが、簡易な方法として。