WebサイトでSSLを利用した上に高負荷対応も考慮した構築にするとWeb的に結構なお値段になりますが、Azure CDNを利用するとびっくりするくらい安くSSL対応の高負荷対応サイト(しかもWordPress利用)が構築できるんでは?みたいのを見かけまして、本当かどうか試してみました~。
ちなみに今回の価格にはドメイン・メールサービス・Azure CDN・WebApps(WordPress)のお値段全て入っておりますw
事前準備
今回の方法を試すため、最低限以下のものを準備する必要があります。
- ドメイン
- メールアドレス
このあたりはお手軽にサクッと進めたいので、私は毎度のごとくムームードメイン でドメイン&メールサービスを利用するようにしました。
今回のドメイン&メールサービスの費用は1年間で【754円】。ジッサイ安い。
メールアドレスは最低限「admin@ドメイン名」と「postmaster@ドメイン名」を用意しておきます。(理由は後述)
今回やったこと
図解するとこのような感じ。
Azure CDN は使った分だけ課金が行われます。なので超高負荷サイトでもない限り、費用面はかなりお安くなります。
今回の手順は以下。
- 新規WebAppsを作成しWordPressをインストール
- Azure CDNの設定
- Azure CDNにカスタムドメイン設定
- Azure CDNにSSL設定
さて、WebApps上にWordPressサイトを構築しますが、今回のWebAppsはFreeプランを使用します。
通常であればWebAppsのFreeプランは「カスタムドメインの設定ができない」「SSLサポート無し」です。
サイトのURLも「[アプリ名].azurewebsites.net」となります。(カスタムドメイン設定とSSLの設定はBasic以上のサービス)
ですが、今回はこのBasic以上のサービスからサポートされる内容(カスタムドメインとSSLの設定)をAzure CDNで設定してしまおう、という話。
Azure CDNを利用すると、カスタムドメイン設定とSSL設定を無料で利用することができます。
FreeプランのWebAppsを新規作成
WordPress+SQliteを使用する
WebApps内に必要なもの全て(WordPressや画像やデータベース)を置きたいのと、費用を抑えたいので「WordPress+SQlite」を使用しました。
SQliteはファイルタイプのデータベースなので、WordPress構築時に必須になるデータベースを別途用意する必要がありません。
というわけで、WebApps+WordPressサイト構築でかかった費用は【0円】。
kuduを使うなりして、WebApps(Freeプラン)に「WordPress+SQlite」をインストールしておきます。
WordPressはrootではなく、「/wordpress/」内に配置しました。
今回はお問い合わせフォームを利用したいので、プラグイン「Contact Form7」と「Send Grid SMTP」を利用しています。
Azure CDNの設定
赤枠内に「CDN」と入力して検索するか、左メニューから「CDNのプロファイル」を探して作成します。
赤枠内を適宜入力していきます。価格レベルはS1「Standard Verizon」を選択。
CDNが作成されるのを少し待ちます。
作成されたら、エンドポイントをクリック。
「エンドポイントの追加」が表示されるので赤枠内を入力していきます。
今回はCDNで配信する対象がWebAppsの中のWordPressサイトなので、このような内容になっています。
しばらく待つと、エンドポイントの表示がこのように変わります。
この表示になったら、カスタムドメインの設定を行います。
Azure CDNのエンドポイントにカスタムドメインを設定
DNSプロバイダー管理画面での作業
私はムームードメインを利用しているので、そちらでの設定を行う方法です。
ドメイン操作→ムームーDNS→該当のドメインで表示。
赤枠のように入力します。これで変更すると、Azure側でカスタムホスト名が設定できます。
Azureポータルの作業
「CDNのプロファイル」でエンドポイントをクリック。
上記の表示になったら「カスタムドメイン」をクリック。
赤枠内に「カスタムホスト名」を入力します。
この部分、DNSプロバイダーでカスタムホスト名から CDNエンドポイントのホスト名への DNSマッピングを作成していない状態だとエラーになるので注意!
上記の設定完了後、再度カスタムドメインをクリックすると、このブレードが開きます。
カスタムドメインHTTPSをオンにします。
カスタムドメインのカスタムドメインHTTPSは「Disabled」の表示です。
このあとDigiCertからドメインの所有権を検証のためのメールが送られてきます。
公式ページ内からの抜粋は以下。
- admin@
- administrator@
- webmaster@
- hostmaster@
- postmaster@
大体、設定完了してから30分くらいでDigiCertからメールがきます。
私は何度かAzureCDNを作り直したりしたのですが、「admin@」と「postmaster@」に確認メールがきたのを確認しました。
詳細は以下のページをどうぞ。
https://docs.microsoft.com/ja-jp/azure/cdn/cdn-custom-ssl
このような内容のメールがくるのでURLをクリックしてページを表示。
内容を確認して、一番下に署名、。これで手続きは完了です!
このあとSSLが利用できるようになるまでひたすら待つんですが、私は8時間程度で有効になっていました。
有効になると、カスタムHTTPSの「Disabled」が「Enabled」に変わります。
きちんと「保護された通信(HTTPS)」と表示されています!
追記:AzureのDDos攻撃の対策について
今回のやり方を公開したあとに「もしDDos攻撃あったら費用が大変なことになるのでは?(俗に言うパケ死)」という話を結構みましたので、AzureのDDos攻撃の対策について加筆しておきます。
CDN含め、Azureは基盤でDDos攻撃を弾く機能が既にあるとのこと。
ちなみに、中の人ですらセキュリティテストやってますって連絡なしに攻撃したら落とされるそうでw
詳細は公式ドキュメントをどうぞ。
https://docs.microsoft.com/ja-jp/azure/best-practices-network-security
また、AzureのDDos攻撃対策についてはこちらの記事も大変参考になると思います!
http://torumakabe.github.io/post/azure_ddosprotection/
@mihochannelさん、@kazumihirose さん、AzureのDDos攻撃対策についての情報ありがとうございました!!m(_ _)m
最後に
※該当のページは配信を停止しました。
CDNは高いというイメージがあったのですが、WebAppsやBlobストレージとうまく組み合わせれば通常のレンタルサーバー並の価格でSSL対応した高負荷にも耐えられるサイトが構築できるので、非常に便利ではないかと!
今回はWebAppsを利用しましたがBlobストレージに静的サイトを置いて、CDNをBlobストレージに向けるとかでもイイ感じではないかと。
ただ、SSLの有効化に時間かかったりするので即日対応しないといけない!とかはオススメできませんが…。
使いどころは考えますが、手順もコツさえ掴めばすぐに構築できるのが利点かなと思いました!
参考にさせていただきました
Azure CDN がカスタムドメインでの HTTPS に対応したので試してみた
http://blog.shibayan.jp/entry/20170209/1486651705
Azure CDN の概要
https://docs.microsoft.com/ja-jp/azure/cdn/cdn-create-new-endpoint