AWSでWordPressを構築する②(CloudFront設置)

この記事は約5分で読めます。
スポンサーリンク

今回やろうとしていること

CloudFrontとは?
  • AWSが提供する高速・高パフォーマンスなコンテンツ配信サービス(CDN)
  • ユーザを最寄りのエッジサーバに誘導することで高速な配信を実現
  • コンテンツをエッジサーバでキャッシュしてオリジンサーバの負荷を減らすことで安定した配信を実現

是非使いましょうといえるナイスなサービスです。

スポンサーリンク

当ブログにおけるCloudFront設置目的

CloudFrontのメリット活用は勿論ですが、

  • AWS WAF(WAF:Webアプリケーションファイアーウォール)連携によるセキュリティ強
  • 常時SSL化

に使いたいというのが目的となります。
こちらに関しては別の記事にてごご紹介しようと思っています。

スポンサーリンク

CloudFrontの設定

こちらの記事こちらの記事を参考にしました。

Distributionの作成

CloudFrontコンソールを開き、[Distribution]->[Create Distribution]をクリックします。

[Web]-[Get Started]をクリックします。

[Origin Domain Name]にCloudFrontがアクセスするドメイン名を入力します。
検索エンジン等で外部に公表しないドメイン名を入力します。
事前にRoute53でAレコードの設定を行っておく必要があります

入力後TABキーを押すと[Origin ID]に値が自動入力されますが、こちらはそのままの値でOKです。

[Default Cache Behavior Settings]は次の内容で設定しました。

  • Viewer Protocol Policy

常時SSL化は後日に行う事にしましたので、[HTTP and HTTPS]にしました。

  • Allow HTTP Methods

GET,HEAD,OPTIONS,PUT,POST,PATCH,DELETEを選択。

  • Cache Based on Selected Request Headers

WhiteListを選択。

  • Whitelist Headers
    • CloudFront-Forwarded-Proto(Originへプロトコルを通知)
    • Host(Originへホスト名を通知)

を設定。
参照記事によると常時SSL化を行う際にポイントとなる設定との事ですので、後日行う常時SSL化に備え現段階で設定しておく事にしました。

  • TTL

デフォルトのままです。

  • Forward Cookies

ALLを選択。

  • Query String Forwarding and Caching

Forward ALL,cache based on ALLを選択。

他の項目はデフォルト設定のままです。

Behaviorの設定(設定を見直しました)

Distributionの作成後、[Behaviors]-[Create Behavior]から

  • /wp-admin/*
  • /wp-login.php
  • *.php

を作成しました。
管理画面系コンテンツやphpファイルについて、TTL=0(キャッシュしない)で設定しておきます。

設定内容は各PathPattern共通です。

  • Viewer Protocol Policy

常時SSL化は後日に行う事にしましたので、[HTTP and HTTPS]にしました。

  • Allow HTTP Methods

GET,HEAD,OPTIONS,PUT,POST,PATCH,DELETEを選択。

  • Cache Based on Selected Request Headers

ALLを選択。

  • TTL

Cache Based on Selected Request Headers:ALLを選択すると0になります。

  • Forward Cookies

ALLを選択。

  • Query String Forwarding and Caching

Forward ALL,cache based on ALLを選択。

他の項目はデフォルト設定のままです。

補足 Cache Based on Selected Request Headers設定について

AWS公式マニュアルに次の記載がありました。

完全にキャッシュさせず、オリジンに常にリクエストを送信する場合は、ALLを選択した方が良いようです

ErrorPageの設定

エラーページで運悪く500,502発生した場合は10秒でキャッシュ削除するようにしました。

DNS設定

DomainNameに設定された xxx.cloudfront.netのドメイン名をAlternate Domain Names(CNAMEs)に設定したドメイン名のCNAMEにDNSサーバで設定します。
Route53の場合はAliasレコードでの設定でOKです。

WordPressの設定変更

WordPressの設定変更を行う前に保険でEBSのスナップショットを取っておきましょう
その後、WordPressの設定よりCloudFrontのURLに変更します。

もし管理画面にアクセスできなくなった場合、こちらの設定を行って頂くことでアクセスできるようになりますが、暫定的な対処方法です。

解決するにはデータベースのwp-optionsテーブルのoption_name in (‘siteurl’,’home’)
をSQLのupdateで正しい値(URLまたはEC2インスタンスのPublicIP)で更新する必要があります。

SQLでのリカバリーが難しいようでしたら、スナップショットからリカバリーしましょう。

スポンサーリンク

まとめ

  • これでAWS WAFを設定する下地が整いました
  • 後日、他の方のご指摘や勉強会でCloudFrontの設定は相当奥が深い事が分かりました。勉強して今後改善しようと思います。
  • 常時SSL化はまた別の機会に・・・
参考資料
スポンサーリンク
AWS
ヤマログ
タイトルとURLをコピーしました