【GCPでWordPress構築】5. CloudFlareの利用開始と各種設定

サムネイル

本ブログは、GCP(Google Cloud Platform)上にWordPressの仮想インスタンス(サーバ)を立てて運営しています。

この連載では、本ブログを0から構築した時の手順を紹介しています。

GCPって何?という方は次の記事を先に読んでくださいね。

今回は、CloudFlareを導入してサイトのアクセス高速化を図ります。

この記事でやること

  • CloudFlareの利用を開始する。
  • ネームサーバーをCloudFlareに置き換える。
  • DNSSECを設定する。
  • キャッシュの設定をする。

Webサイトの高速化を図るため、CloudFlareを利用します。

CloudFlareに登録

まずは、こちらからCloudFlareのアカウントを作成します。

登録

サイトのドメインを入力します。

サイト登録

プランはFreeを選択します。

プラン選択

デフォルトで追加してあるCNAMEレコードを「×」で削除します。

CNAME削除

OKをクリック。

確認
削除後

ネームサーバーの置き換え

CloudFlareのネームサーバーを権威DNSに設定

CloudFlareのネームサーバーを権威DNSとして現在利用しているDNSに設定します。
本サイトはDNSにGoogle Domainsを使用していますが、他のサービスを使用されている方は各サービサーの設定を確認してください。

まず、「Replace with Cloudflare’s nameservers」のNameserver1と2を控えます。

ネームサーバ

Google Domainsに移動して、「DNS」から「カスタムネームサーバーを使用する」を選択します。

カスタムネームサーバーの選択

ネームサーバーに先ほどのCloudFlareのネームサーバーを設定します。

ネームサーバーの設定
設定完了

これによってサイトのアクセスがCloudFlare経由になります。

CloudFlareのアイコンをクリックするとサイトとの連携状態が表示されます。下の画像のように「Active」になっていれば、CloudFlareがネームサーバとして利用できる状態になっています。

DNS設定の確認

証明書の確認

サイトにhttpsでアクセスして証明書を確認してみます。
アドレスバーの先頭の鍵マークをクリックし、「証明書」をクリックします。

証明書表示

そうすると証明書の情報が確認できます。発行者がCloudFlareになっていればOKです。

証明書の情報

前回の記事ではLet’sEncryptを使ってWebサーバの証明書を発行しましたが、Webサーバの認証はCloudFlareに任せているので、ブラウザ(クライアント)から見える証明書はCloudFlareのものになります。

http接続でhttpsにリダイレクトされない場合

前回の記事で、Webサーバへのhttp接続を自動的にhttpsにリダイレクトする設定を行いました。

上記の設定を行っていない場合、httpで接続したらそのままアクセスされると思うので、次の手順でCloudFlareで常時SSL通信をオンにしてください。

「SSL/TLS」から「Edge Certificates」タブをクリック。

ページ遷移

「Always Use HTTPS」と「Automatic HTTPS Rewrites」をOnにする。

Always Use HTTPS有効
Automatic HTTPS Rewrites有効

DNSSECの設定

次に、DNSSECの設定を行います。Google Domainsは無料でDNSSECが利用できるので設定しておきます。
(サービスによっては有料なこともあります。)

DNSSECはキャッシュポイズニング攻撃から保護する対策です。

CloudFlareのDNS設定からDNSSECの「Enable DNSSEC」をクリックします。

DNSSEC情報
DNSSEC情報

上記の情報をGoogle Domainsに設定していきます。

Google Domainsの「DNS」からDNSSECの設定に移動し、キータグ:KeyTag、アルゴリズム:Algorithm、ダイジェストタイプ:DigestType、ダイジェスト:Digestをそれぞれ入力してください。

情報を設定

これでDNSSECの設定は終わりです。

キャッシュの設定

続いてキャッシュの設定を行います。キャッシュを取得する設定と合わせて、除外ページの設定と、キャッシュの自動削除の設定を行っていきます。

記事投稿時にキャッシュを削除する

一度投稿した記事を更新した際、キャッシュが取得されている間はその更新が反映されなくなってしまいます。いちいちキャッシュを削除するのも面倒なので、記事の投稿時は自動的にキャッシュを削除するように設定します。

これは、WordPressにCloudFlareのプラグインを導入することで設定可能です。

プラグインを設定するにあたって、CloudFlareのAPIキーが必要になるので、まずはAPIキーを取得します。CloudFlareのページから「My Profile」を表示してください。

My Profile

「API Tokens」タブから、Global API Keyの「View」を選択します。
パスワードを入力したら、表示されるキーを控えておいてください。

キー表示

次に、WordPressでCloudFlareのプラグインを導入します。

管理画面にログインし、メニューの「プラグイン」から「新規追加」を選択してください。

プラグイン追加

「Cloudflare」と検索してプラグインをインストールします。

プラグインインストール

インストール後の画面で「here」をクリックします。

here

CloudFlareに登録しているメールアドレスと先ほど控えたAPIキーを入力し、「Save API Credentials」をクリックします。

キー入力

これでプラグインの導入は完了です。

設定画面に遷移するので、「Automatic Cache Management」をOnにします。
これにより、記事を投稿した際に自動的にキャッシュが削除されます。

設定

なお、「Purge Cache」から手動でキャッシュの削除ができるので、キャッシュを削除するためにCloudFlareにログインする必要がなくなります。

キャッシュルールを設定する

次に、キャッシュを保有する時間とキャッシュを除外するURLを指定するため、CloudFlareのキャッシュルールを作成します。キャッシュルールは、無料プランでは3つまで設定可能です。

CloudFlareにログインし、「Page Rules」タブから、「Create Page Rule」をクリックします。

キャッシュルール

設定するルールは次の3つです。

  • ルール1:/wp-admin/ 以下(管理画面のページ)はキャッシュしない
  • ルール2:preview=true (記事のプレビューページ)はキャッシュしない
  • ルール3:キャッシュの保管期間は8時間(1と2を除く全ページ)

ルール3の時間はお好きな時間を設定してください。

ルール1:/wp-admin/ 以下(管理画面のページ)はキャッシュしない

URL:*<ドメイン>/wp-admin/*
Then the setting are:Cache Level > Bypass
          Disable Performance

ルール1

ルール2:preview=true (記事のプレビューページ)はキャッシュしない

URL:*<ドメイン>/*preview=true*
Then the setting are:Cache Level > Bypass
          Disable Performance

ルール2

ルール3:キャッシュの保管期間は8時間(1と2を除く全ページ)

URL:*<ドメイン>/*
Then the setting are:Cache Level > Cache Everything
          Edge Cache TTL > 8 hours

ルール3

上記のルールを追加したら、以下のように設定されているはずです。
ルールは上位から適用されるので、ルール1とルール2は必ずルール3より上位になるように設定してください。

(すべての構築作業が完了するまではOffにしておいた方がいいと思います。問題が発生した時にキャッシュがあると面倒なので)

設定結果

今回は以上です。

次はストレージとしてGCSの設定を行います。

コメント

タイトルとURLをコピーしました