前回は Azure の DNS ゾーンでカスタム ドメインを使うという記事を書きましたが、
今回はさらに、Azure Web App の仮想ディレクトリにサブドメインを対応させる方法について書きます。
つまり、1 つの独自ドメインと 1 つの Azure Web App (Shared 以上) があれば、
複数のサブドメインをホストできるということです。
方針としては、DNS ゾーンではワイルドカード ドメインを設定して、
Azure Web App で仮想ディレクトリとサブドメインの対応を設定します。
例えば abc.com が abccom.azurewebsites.net に対応しているとしたら、
app1.abc.com を abccom.azurewebsites.net/app1 に対応するようにします。
以下、設定手順です。
DNS ゾーンの設定
DNS ゾーンでワイルドカード ドメインを受け付けるように設定します。
[レコード セットの追加] で次の 3 つのレコードを登録します。
@ A xxx.xxx.xxx.xxx (IP アドレス)
awverify CNAME awverify.app-name.azurewebsites.net
* CNAME app-name.azurewebsites.net
前回のときに www としていた部分を * (ワイルドカード) に変更しただけです。
Web App の設定
Azure Web App の [アプリケーション設定] – [仮想アプリケーションとディレクトリ] で仮想ディレクトリを作成します。
指定された仮想ディレクトリには、Web Deploy や FTP などを使って Web アプリケーションを配置しておきます。
(詳細不明ですが、Web アプリケーション プロジェクトに Application Insights を追加しておかないと、
配置後に実行時エラーになりました。)
次に [カスタム ドメインおよび SSL] で、利用可能にしたいサブドメインを追加します。
これで、サブドメインへのアクセスもこの Web App で受け付けられるようになります。
(ここでワイルドカード ドメインを登録する方法もあるでしょう。)
このままだと、サブドメインへのアクセスがすべてルートのアプリケーションに流れてしまいます。
そこで www 以外のサブドメインと仮想ディレクトリを対応させるため、URL Rewrite を使います。
ルートの Web アプリケーションの Web.config に次の設定を追加します。
<configuration> | |
<system.webServer> | |
<rewrite> | |
<rules> | |
<rule name="subdomains" stopProcessing="true"> | |
<match url="^(.*)$" /> | |
<conditions> | |
<add input="{HTTP_HOST}" pattern="http://www.saka-pon.net" negate="true" /> | |
<add input="{HTTP_HOST}" pattern="^([^.]+).saka-pon.net$" /> | |
</conditions> | |
<action type="Rewrite" url="{C:1}/{R:1}" /> | |
</rule> | |
</rules> | |
</rewrite> | |
</system.webServer> | |
</configuration> |
以上で、test1.saka-pon.net または saka-pon.net/test1 の URL で仮想アプリケーションにアクセスできるようになりました。
前回: Azure の DNS ゾーンでカスタム ドメインを使う
参照
Creating Rewrite Rules for the URL Rewrite Module
URL Rewrite Module 2.0 Configuration Reference
URL 書き換えモジュール構成のリファレンス
Windows IIS/Azure WebサイトのURL Rewrite機能でURLを書き換える(基本編)
Azure Web App に FTP でデプロイする
Visual Studio から Windows Azure にデプロイする