Azure Web App の仮想ディレクトリにサブドメインを設定する

前回は 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 を追加しておかないと、
配置後に実行時エラーになりました。)

Web を発行

 

次に [カスタム ドメインおよび SSL] で、利用可能にしたいサブドメインを追加します。
これで、サブドメインへのアクセスもこの Web App で受け付けられるようになります。
(ここでワイルドカード ドメインを登録する方法もあるでしょう。)

カスタム ドメインおよび SSL

 

このままだと、サブドメインへのアクセスがすべてルートのアプリケーションに流れてしまいます。
そこで www 以外のサブドメインと仮想ディレクトリを対応させるため、URL Rewrite を使います。
ルートの Web アプリケーションの Web.config に次の設定を追加します。

 

以上で、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 にデプロイする

Azure の DNS ゾーンでカスタム ドメインを使う

Microsoft Azure には DNS ゾーンの機能がありますが、管理ポータルの GUI で設定ができるようになりました。
(以前は PowerShell で設定していたようです)
以下では、DNS ゾーンを設定して、Azure Web App をカスタム ドメインで使うための手順を示します。

前提として、次のものを用意します。

  • Web サイトに設定したい独自ドメイン
  • Web サイトの実体となる Azure Web App
    • この時点では app-name.azurewebsites.net の形式でのみアクセスできる
    • 独自ドメインを利用するには、価格レベルは Shared 以上が必要

この Azure Web App に、abc.com および www.abc.com の形式のドメインでアクセスできることを目標とします。

 

Azure 管理ポータルの [DNS ゾーンの作成] で、[名前] にはドメインを入力します。

DNS ゾーンの作成

これで DNS ゾーンが作成されます。
次に [レコード セットの追加] で、次の 3 つを登録します。

@ A xxx.xxx.xxx.xxx (IP アドレス)
awverify CNAME awverify.app-name.azurewebsites.net
www CNAME app-name.azurewebsites.net

Azure Web App の IP アドレスは、後述する [外部ドメインの使用] を開くと表示されます。
また、awverify は Azure Web App を利用する場合の固有のもので、作業者が同一であるかを確認するために必要です。
この設定がないと、後述する [外部ドメインの使用] でエラーとなります。

[名前] を空欄にすれば、自動的に @ (ルート) になります。

レコード セットの追加

レコード セットを追加すると、次の画面のようになります。
SOA レコードと NS レコードは最初から登録されています。

レコード セット

 

上の画面には「ネーム サーバー」がいくつか表示されています。
これらをドメイン管理サービスの DNS サーバーとして設定します。
次に示すのはデータ・ジャパンの管理サイトです。

DNS サーバー

基本的にはすぐにネットワークに設定が反映されますが、かなり時間がかかることもあるようです。
設定が反映されているかどうかは、Dig web interface などで確認できます。

Dig web interface

 

最後に、Azure 管理ポータルに戻り、Azure Web App の [カスタム ドメインおよび SSL] – [外部ドメインの使用] で
利用したいドメインを割り当てれば完了です。
ここでは、ドメインのルートのほか、www 付きのドメインも指定しています。

カスタム ドメインおよび SSL

ちなみに、DNS ゾーンで www のレコードを

www CNAME saka-pon.net

と設定した場合は、この [外部ドメインの使用] で www 付きのドメインを割り当てようとしたときにエラーとなりました。
(おそらく awverify が理由)

 

次回: Azure Web App の仮想ディレクトリにサブドメインを設定する

参照
Azure DNS の使用を開始する
Azure App Service のカスタム ドメイン名の構成
Windows Azure Web サイトに独自ドメイン ( カスタムドメイン ) を設定し使用する
Dig web interface