Azure Storage / CDN / DNS で Web公開

前回の投稿の結果、Azure Storage に Webサイトが投入できるようになったので、これをWebサイトとしてちゃんと公開するところまでやりました。確実に忘れそうなので備忘録です。

kawaguti.hateblo.jp

 

Azure Storage で Web公開の設定

まずは基本の Azure Storage での Web公開です。

 [対象のストレージアカウント] - [静的な Webサイト] で 有効にします。

f:id:wayaguchi:20190530201734p:plain

プライマリエンドポイントのURLにアクセスできればOKです。httpsも勝手に対応してくれます。(DNS独自ドメインからの山椒がなければこれで終わりでいいんですけど....)

f:id:wayaguchi:20190530202107p:plain

 

Azure Storageだけでよいのか?CDNは必要か?httpsは?

次は独自のドメインで上記のサイトが出てくれればいいだけなのですが...。ちょっと手間が必要になりました。以下のサイトを参考にすると「httpsをちゃんと必要とするならCDN必要」ということです。

qiita.com

今回はhttpsを使うことを目指して、Azure CDNをつかってみることにしました。

Azure CDN で キャッシュする

CDNはお金高いかな?と思ってサイトを確認したら5桁の日本円が並んでいて、「うわっ」と思ったのですが、小数点以下が5桁でした。つまりGBあたり数円。

azure.microsoft.com

 

ということでストレージアカウントのメニューから[Azure CDN]を選んで設定を入れます。ホスト名は2つ前の項で確認した静的Webサイトのプライマリエンドポイントを入力します。

f:id:wayaguchi:20190530202847p:plain

リソースグループからエンドポイントを表示して内容を確認します。

f:id:wayaguchi:20190530203724p:plain

CDNエンドポイントからもちゃんと見えました。

f:id:wayaguchi:20190530203703p:plain

 

独自ドメインで表示したい - とりあえず http

Webサイトとしてはちゃんと表示できそうなので、次はDNSを振り替えて、独自ドメインで表示できれば完璧です。もともとドメイン名を購入したDNSには登録しているので、そのレコードをいじるだけでよさそうなのですが、契約しているプロバイダのDNSは、設定をいじる時にテキストを直接いじる感じで今ひとつです。そこで、今回はプロバイダではなく、Azure DNS を使ってみました。

独自ドメインhttpsは証明書の手配が必要なので後回しにして、httpで確認をとっていくことにします。そのために、静的Webサイトの設定を緩めます。 [ストレージアカウント]-[構成] で "安全な転送が必須" を無効 にします。

f:id:wayaguchi:20190530205400p:plain

Azure DNS を起動する

[全てのリソース]-[追加] で DNSを作成します。

f:id:wayaguchi:20190530210047p:plain

f:id:wayaguchi:20190530210044p:plain

ネームサーバー情報を確認して...

f:id:wayaguchi:20190530210617p:plain

ドメインのプロバイダ側にネームサーバを記入します。

f:id:wayaguchi:20190530210718p:plain

この反映には数時間かかります。

Azure DNS側に転送設定を入れておきます。

f:id:wayaguchi:20190530211322p:plain

テキストファイルじゃないし、適宜入力値チェックもしてくれるので便利。

 

数時間して、DNSの切り替えが有効になったら、CDNエンドポイントにカスタムドメインを設定します。切り替わるまではエラーになります(DNSの設定が間違っていてもなりますので注意)。DNSの設定変更は反映のタイムラグが大きいので、時間あるときに気長に試すとよさそうです。

f:id:wayaguchi:20190530211949p:plain 

だいぶ経ってから、アクセスできるように。

f:id:wayaguchi:20190530212417p:plain

(この時点でトラブって色々試行錯誤してしまったので、手順が抜けてたらごめんなさい...。)

 

補足: PC側のDNSキャッシュを消す

DNSの設定を変えた時に作業用の Mac だけどうにも切り替わらないなーと思ったらOSやChromeでキャッシュされていたみたいです。

qiita.com

波及に時間がかかるDNS設定変更の時は、特にハマりやすいなと思いました。スマホとか他の端末でも並行して確認する方がいいかもしれません。

 

Windowsはこちらのようです(試してません)。

qiita.com

 

www. なしでもうまく表示したい

www,なしのURLでも同じものを表示するか、wwwに転送したいところですが、DNSで単純に解決しようと思うと、「CNAMEは www.抜きのアドレス(@)には使うことができない」というのがRFCに書いてあるようで、ググるといろんなところでやっちゃダメって書いてあります。え、みんなどうしてるの?

Azure DNSだと、「エイリアスレコード」というので実現できるようです。AWSでも同じようにエイリアスでやるようです。

f:id:wayaguchi:20190530213627p:plain

ドキュメントも見つけたので貼っときます。

docs.microsoft.com

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側のカスタムドメインに追加しておきます。これをしないとエラーになることがあるみたい。(うまくアクセスできる時もあったりしたのでよくわかってませんが、DNSCDNに振ったら、CDN側にも設定を入れるものだと覚えておきたい)

f:id:wayaguchi:20190531000423p:plain

httpsも対応したい

最後に独自ドメインhttps対応 ですが、これはAzure KeyVaultから証明書を買うことでかなり自動的にできるみたいです(便利や)。

f:id:wayaguchi:20190530214143p:plain

ドメインの検証に時間がかかるようです。

f:id:wayaguchi:20190530214236p:plain

しばらくほっといたら終わってました。

f:id:wayaguchi:20190531000913p:plain

ということでサイトを公開できました。

www.innovationsprint.com

 

あ、www.無しのURLも証明書付けないといけないのか....。こっちも証明書を追加しました。

f:id:wayaguchi:20190531001624p:plain

 

 ※ 6/10 追記 : wwwなしのURLはSSL追加でエラーが出ます。

   f:id:wayaguchi:20190610145431p:plain

 

以上、Azure で静的Webサイトをホストした時の備忘録でした。

もっとこうしたほうがいいよとかあれば、ぜひお教えいただければありがたいです。