前回の投稿の結果、Azure Storage に Webサイトが投入できるようになったので、これをWebサイトとしてちゃんと公開するところまでやりました。確実に忘れそうなので備忘録です。
Azure Storage で Web公開の設定
まずは基本の Azure Storage での Web公開です。
[対象のストレージアカウント] - [静的な Webサイト] で 有効にします。
プライマリエンドポイントのURLにアクセスできればOKです。httpsも勝手に対応してくれます。(DNSで独自ドメインからの山椒がなければこれで終わりでいいんですけど....)
Azure Storageだけでよいのか?CDNは必要か?httpsは?
次は独自のドメインで上記のサイトが出てくれればいいだけなのですが...。ちょっと手間が必要になりました。以下のサイトを参考にすると「httpsをちゃんと必要とするならCDN必要」ということです。
今回はhttpsを使うことを目指して、Azure CDNをつかってみることにしました。
Azure CDN で キャッシュする
CDNはお金高いかな?と思ってサイトを確認したら5桁の日本円が並んでいて、「うわっ」と思ったのですが、小数点以下が5桁でした。つまりGBあたり数円。
ということでストレージアカウントのメニューから[Azure CDN]を選んで設定を入れます。ホスト名は2つ前の項で確認した静的Webサイトのプライマリエンドポイントを入力します。
リソースグループからエンドポイントを表示して内容を確認します。
CDNエンドポイントからもちゃんと見えました。
独自ドメインで表示したい - とりあえず http
Webサイトとしてはちゃんと表示できそうなので、次はDNSを振り替えて、独自ドメインで表示できれば完璧です。もともとドメイン名を購入したDNSには登録しているので、そのレコードをいじるだけでよさそうなのですが、契約しているプロバイダのDNSは、設定をいじる時にテキストを直接いじる感じで今ひとつです。そこで、今回はプロバイダではなく、Azure DNS を使ってみました。
独自ドメインのhttpsは証明書の手配が必要なので後回しにして、httpで確認をとっていくことにします。そのために、静的Webサイトの設定を緩めます。 [ストレージアカウント]-[構成] で "安全な転送が必須" を無効 にします。
Azure DNS を起動する
[全てのリソース]-[追加] で DNSを作成します。
ネームサーバー情報を確認して...
ドメインのプロバイダ側にネームサーバを記入します。
この反映には数時間かかります。
Azure DNS側に転送設定を入れておきます。
テキストファイルじゃないし、適宜入力値チェックもしてくれるので便利。
数時間して、DNSの切り替えが有効になったら、CDNエンドポイントにカスタムドメインを設定します。切り替わるまではエラーになります(DNSの設定が間違っていてもなりますので注意)。DNSの設定変更は反映のタイムラグが大きいので、時間あるときに気長に試すとよさそうです。
だいぶ経ってから、アクセスできるように。
(この時点でトラブって色々試行錯誤してしまったので、手順が抜けてたらごめんなさい...。)
補足: PC側のDNSキャッシュを消す
DNSの設定を変えた時に作業用の Mac だけどうにも切り替わらないなーと思ったらOSやChromeでキャッシュされていたみたいです。
波及に時間がかかるDNS設定変更の時は、特にハマりやすいなと思いました。スマホとか他の端末でも並行して確認する方がいいかもしれません。
Windowsはこちらのようです(試してません)。
www. なしでもうまく表示したい
www,なしのURLでも同じものを表示するか、wwwに転送したいところですが、DNSで単純に解決しようと思うと、「CNAMEは www.抜きのアドレス(@)には使うことができない」というのがRFCに書いてあるようで、ググるといろんなところでやっちゃダメって書いてあります。え、みんなどうしてるの?
Azure DNSだと、「エイリアスレコード」というので実現できるようです。AWSでも同じようにエイリアスでやるようです。
ドキュメントも見つけたので貼っときます。
Traffic Manager プロファイルの場合と同様に、エイリアス レコードを使用して DNS ゾーンの頂点から Azure CDN エンドポイントをポイントすることもできます。 これは、Azure Storage と Azure CDN を使って静的な Web サイトを作成する場合に便利です。 DNS 名の前に "www" を付けなくても、Web サイトにアクセスできるようになります。
たとえば、静的な Web サイトの名前が www.contoso.com の場合、DNS 名の前に www を付ける必要はなく、ユーザーは contoso.com を使ってサイトにアクセスできます。
前述のように、CNAME レコードはゾーンの頂点ではサポートされていません。 そのため、CNAME レコードを使用して contoso.com から CDN エンドポイントをポイントすることはできません。 代わりに、エイリアス レコードを使用して、ゾーンの頂点から直接 CDN エンドポイントをポイントすることができます。
CDN側のカスタムドメインに追加しておきます。これをしないとエラーになることがあるみたい。(うまくアクセスできる時もあったりしたのでよくわかってませんが、DNSでCDNに振ったら、CDN側にも設定を入れるものだと覚えておきたい)
httpsも対応したい
最後に独自ドメインの https対応 ですが、これはAzure KeyVaultから証明書を買うことでかなり自動的にできるみたいです(便利や)。
ドメインの検証に時間がかかるようです。
しばらくほっといたら終わってました。
ということでサイトを公開できました。
あ、www.無しのURLも証明書付けないといけないのか....。こっちも証明書を追加しました。
※ 6/10 追記 : wwwなしのURLはSSL追加でエラーが出ます。
以上、Azure で静的Webサイトをホストした時の備忘録でした。
もっとこうしたほうがいいよとかあれば、ぜひお教えいただければありがたいです。