Azure CDNでSSLとCustom domainを使い、Storage accountから静的Webサイトを公開する

Azure CDNを使って公開するのはとても簡単だった。ほとんどドキュメントを読まなくても大丈夫。唯一手間取ったのが、ReactのためのURL Rewriteの設定。詳しくは以下で。

Azure CDNのセットアップ

まずは、Azure CDNのセットアップを行う。Storage accountの設定ページを開き、左のメニューからAzure CDNを探してクリックする。New endpointフォームを入力してCreateをクリック。Origin hostnameには、デフォルトで入っているStorage accountのアドレスではなく、WebのPrimary endpointを入力するのがポイント。これはStatic websiteページから取得できる。今回の場合はweb.core.windows.netドメインにあった。

以下では、Microsoft CDNを選んだ場合について解説する。

これだけでCDNが準備され、設定したアドレスを使ってWebサイトにアクセスできるようになる。

カスタムドメイン

次に、カスタムドメインの設定を行う。

DNSの管理画面に行き、使いたいアドレスからCDNのEndpointへのCNAMEレコードを設定する。


CDNの設定ページを開き、Custom domainsを選択。追加ボタンを押す。使うカスタムドメインを入力し、しばらく待つと以下の画面になる。以上で終わり。




URL rewrite

これはReact router等を使ってシングルウェブページ上で複数のURLを作った場合の話。その仮想的なアドレスにユーザがアクセスすると、当然そのファイルは存在しないのでCDNは404エラーを返してしまう。そこで、それらの仮想的なアドレスへのアクセスに対して/index.html等のファイルを返してあげる必要がある。


CDNの設定画面から、Rules engineを選択する。Add ruleをクリックする。ルールの条件として、ファイル名にピリオドが含まれないことを指定。アクションとしてはSource pattern "/"からDestination /index.htmlへのURL rewriteとした。Preserve unmatched pathはNoとすること。これをYesとすると、/index.html部分に対して余計なPathが追加されてしまう。

うっかりやりがちなミスが、ファイル名をチェックする条件を指定し忘れること。ファイル名をチェックしないと、*.jsや*.cssへのアクセスもリダイレクトしていまい大惨事になる。

Source patternに対して正規表現を入れれば、わざわざURL file name条件を入れなくても簡単に設定できるんじゃないか、とも思うが、自分が試した限りではうまくいかなかった。ライブラリのドキュメントにはprefix-baseとあるので、対応していないんじゃないかと思う。

File extensionがNot Anyという条件でも同様なことが実現できそうな気がするが、これもうまくいかなかった。理由は不明。

Comments

Popular posts from this blog

LinuxでUSBカメラ映像をストリーミングかつ録画する

WSL2上でSSH経由のSOCKSプロキシを作りWindowsから使う

Raspberry pi 4とUbuntu Server 20.04 64bitでRaspberry pi cameraを使う