CloudFront ディストリビューションの作成 - AWS での WordPress に関するベストプラクティス

CloudFront ディストリビューションの作成

ディストリビューションに従って CloudFront ウェブディストリビューションを作成します。自動的に作成されるデフォルトのオリジンとビヘイビアが動的コンテンツに使用されます。静的および動的リクエスト両方を扱う方法をさらにカスタマイズするため、追加のビヘイビアを作成します。次の表は、5 つのビヘイビアの設定プロパティをまとめたものです。この手動設定を省略して、「付録 B: プラグインのインストールと設定」で説明されている AWS for WordPress plugin を使用することもできます。これは、WordPress サイトを加速させるように CloudFront を設定する最も簡単な方法です。

表 1: CloudFront ビヘイビアの設定プロパティの概要

プロパティ 静的 動的 (管理) 動的 (フロントエンド)
パス (ビヘイビア)

wp-content/*

wp-includes/*

wp-admin/*

wp-login.php

デフォルト (*)
プロトコル HTTP および HTTPS HTTPS にリダイレクト HTTP および HTTPS
HTTP メソッド GET、HEAD ALL ALL
HTTP ヘッダー なし すべて

ホスト

CloudFront-Forwarded-Proto

CloudFront-Is-Mobile-Viewer

CloudFront-Is-Tablet-Viewer

CloudFront-Is-Desktop-Viewer

Cookie なし すべて

comment_*

wordpress_*

wp-settings-*

クエリ文字列 はい (無効化) はい はい

デフォルトのビヘイビアでは、AWS では以下の設定が推奨されます。

  • オリジンのプロトコルポリシーでは Match Viewer (閲覧者に合わせる) を許可します。閲覧者が HTTPS を使用して CloudFront に接続した場合、CloudFront もそのオリジンに HTTPS で接続して、端から端まで接続全体が暗号化されるようにするためです。このためには、ロードバランサーに信頼済み SSL 証明書をインストールする必要があります。詳細については、「CloudFront と使用するカスタムオリジン間の通信で HTTPS を必須にする」を参照してください。

  • ウェブサイトの動的部分が GET および POST リクエストの両方を要求した場合には、すべての HTTP メソッドを許可します (例えば、コメント送信フォームで POST をサポートするため)。

  • >wordpress_*wp-settings-*comment_* など、WordPress の出力を変化させる cookie のみを転送します。このリストに掲載されていない他の cookie に依存するプラグインをインストールした場合には、このリストを拡張する必要があります。

  • HostCloudFront-Forwarded-ProtoCloudFront-is-Desktop-ViewerCloudFront-is-Mobile-ViewerCloudFront-is-Tablet-Viewer など、WordPress の出力に影響する HTTP ヘッダーのみを転送します。

    • Host では、複数の WordPress ウェブサイトを同じオリジンでホストできます。

    • CloudFront-Forwarded-Proto では、HTTP または HTTPS のどちらでアクセスされるかに応じて、異なるバージョンのページをキャッシュできます。

    • CloudFront-is-Desktop-ViewerCloudFront-is-Mobile-ViewerCloudFront-is-Tablet-Viewer では、エンドユーザーのデバイスタイプに基づいて、テーマの出力をカスタマイズできます。

  • WordPress はこれらの値に依存しているため、すべてのクエリ文字列をその値に基づいてキャッシュに転送します。また、キャッシュされたオブジェクトの無効化にも使用できます。

カスタムのドメイン名 (つまり *.cloudfront.net 以外) を使用してウェブサイトを運営する場合には、ディストリビューション設定の [Alternate Domain Names] (代替ドメイン名) に適切な URI を入力してください。この場合には、カスタムドメイン名の SSL 証明書も必要です。AWS Certificate Manager で SSL 証明書をリクエストし、CloudFront ディストリビューションに対して設定できます。

ここで、動的コンテンツ用にさらに 2 つのキャッシュビヘイビアを作成します。1 つはログインページ用 (パスパターン: wp-login.php)、もう 1 つは管理ダッシュボード用 (パスパターン: wp-admin/*) です。これら 2 つのビヘイビアの設定は全く同じで、次のようになります。

  • HTTPS のみの閲覧者プロトコルポリシーを強制。

  • すべての HTTP メソッドを許可。

  • すべての HTTP に基づいてキャッシュ。

  • すべての cookie を転送。

  • すべてのクエリ文字列に基づいて転送およびキャッシュ。

このように設定する理由は、ウェブサイトのこのセクションは高度にパーソナライズされたものとなり、通常は数人のユーザーにしか対応しないため、キャッシングの効率は主要な関心事とはならないためです。重点は、設定をシンプルなものに保ち、すべての cookie とヘッダーをオリジンに渡すことにより、インストールされているプラグインに関し、最大限の互換性が保たれるようにすることです。

付録 B で説明されている AWS for WordPress プラグインは、前述の設定を満たす CloudFront ディストリビューションを自動的に作成します。

デフォルトでは、WordPress はすべてをウェブサーバーにローカルで保存します。ウェブサーバーはシングルサーバーデプロイの場合はブロックストレージ (Amazon EBS)、エラスティックデプロイではファイルストレージ (Amazon EFS) です。静的アセットを Simple Storage Service (Amazon S3) に移行すると、ストレージとデータ転送のコストが削減されるだけでなく、スケーラビリティ、データ可用性、セキュリティ、パフォーマンスが向上します。静的コンテンツを Simple Storage Service (Amazon S3) に簡単に移動できるプラグインがいくつかあります。そのうちの 1 つは W3 Total Cache で、「付録 B: プラグインのインストールと設定」でも説明しています。