前置き
数あるCDNの中でも群を抜いて有名なサービスがCloudflareです!
無料で利用できて、セキュリティリスクの低減とページの高速化ができる便利なサービスなので、筆者がサイトを作るときの初期構築の中で、必ず導入するようにしています。もちろんこのブログも例にもれず、Cloudflareを通してWEBに公開しています。
ただ、便利な反面、設定がちょっとややこしいというデメリットもあるんですよね。筆者としても、何回も設定しているはずなのに、結局覚えてなくて都度調べたりしています。。
できれば面倒なことをあんまりしたくない。しかし最近、このブログに置いてあったツール群を新サイトに移行してしまいました。そう、筆者はCloudflareを利用しなければならない呪いにかかっているので、サイトを作る=Cloudflareの初期設定をする、なのです!
これに伴い、WordpressでCloudflareを利用する際の設定をまとめたので、備忘録的にここに残しておこうと思います!
セキュリティ
まずはセキュリティ設定から。ちょっと面倒ではありますが、手順通りにやれば難しくはないはず!
SSL/TLS を「フル(厳密)」に設定
サーバーに Let’s Encrypt などの証明書が入っている場合は、フル(厳密)で設定しておきましょう。暗号化されていて、かつ相手が正しい証明書を持つサーバーであることが保証されます。
- 各ドメイン設定→SSL/TLS→概要→SSL/TLS 暗号化→設定

- 暗号化モードを設定する→カスタム SSL/TLS→フル(厳密)

常にHTTPSを使用をON
httpアクセスをhttps にリダイレクトすることで、常時SSL接続状態とします。
- 各ドメイン設定→SSL/TLS→エッジ証明書→常にHTTPSを使用→ON

セキュリティルールの設定
ファイアウォールで怪しいアクセスをブロックするように制御します。
- 各ドメイン設定→セキュリティ→セキュリティ ルール→ +ルールを作成

変更後ログインURLの海外ブロック
ログインURLを変更している場合は、変更後のログインURLに対し、国外IPをブロックする設定を入れます。
- 条件式:http.request.uri.path eq “/変更後パス” and ip.geoip.country ne “JP”
- アクションを選択する:ブロック

デフォルトログインページのブロック
デフォルトの国外IPをブロックする設定を入れます。
- 条件式:http.request.uri.path eq “/wp-login.php” and not ip.geoip.country eq “JP”
- アクションを選択する:ブロック

xmlrpc.phpのブロック
ブロックをしていないと、XML-RPC経由でログイン試行(総当たり攻撃)が行われるケースがあるため、こちらもブロックしておきます。
- 条件式:http.request.uri.path eq “/xmlrpc.php”
- アクションを選択する:ブロック

ボットファイトモードをON
アクセスしてきたリクエストが「人間かボットか」を判定し、ボットと判断した場合にブロック・チャレンジ(CAPTCHA)・遅延などを適用します。
- 各ドメイン設定→セキュリティ→設定→ボット ファイト モード→ON

パフォーマンス
セキュリティの次は、パフォーマンスの設定を行います!ここの少々面倒ではありますが、チューニングをすることでキャッシュによる事故が減り、より効果的なキャッシングができるようになります。
キャッシュレベル=スタンダード
- 各ドメイン設定→Caching→構成→キャッシュ レベル→スタンダード

キャッシュルールの設定
主に「キャッシュしない方がよいページを対象外にする」設定をします。
- 各ドメイン設定→Caching→Cache Rules→ +ルールを作成

管理画面(wp-admin/*)をキャッシュ無効
- 条件式:starts_with(http.request.uri.path, “/wp-admin/”)
- 実行内容:キャッシュをバイパスする

標準ログインページ(wp-login.php)をキャッシュ無効
- 条件式:http.request.uri.path eq “/wp-login.php”
- 実行内容:キャッシュをバイパスする

変更後ログインURLをキャッシュ無効
- 条件式:http.request.uri.path eq “/変更後のURL”
- 実行内容:キャッシュをバイパスする

ログインユーザーのキャッシュをしない
- 条件式:http.request.headers[“cookie”][0] contains “wordpress_logged_in_”
- 実行内容:キャッシュをバイパスする

投稿プレビューをキャッシュしない
- 条件式:http.request.uri.query contains “preview=true”
- 実行内容:キャッシュをバイパスする

アップロードディレクトリ(静的ファイル)を長期キャッシュ
- 条件式:(starts_with(http.request.uri, “/wp-content/uploads/”))
- 実行内容:キャッシュの対象
- エッジ TTL:キャッシュ制御ヘッダーを無視し、この TTL を使用します → 1日~
- ブラウザ TTL:オリジン TTL を尊重する


やらないい方が安全なもの
一つ注意するとすればRocket Loaderだと思っています。結構昔からあるので実績は充分ですが、サイトに不具合が出やすいというデメリットがあるんですよね。。個人的にはOFFを推奨します。
まとめ:無料でやるべき3つのポイント
- SSL/TLS を「フル(厳密)」+ 常にHTTPSを使用をON
- セキュリティルールでxmlrpc.phpをブロック、ログインページ制限
- キャッシュルールでログインページと管理画面のキャッシュを無効化 & アップロードフォルダの長期キャッシュ
これを設定することで
- セキュリティリスクの低減
- 表示速度の改善
が見込めます!
最後に
CloudflareなどのCDNサービスは、サイト運営にあたり必須ではありません。ですが、利用することによって悩みが解決する可能性も大いにあります。
ここまで見てくださった方には、多少の面倒くささは伝わっているかと思いますが、一度設定すればその後の運用で設定値をいじることはそんなにありません。ログインしたとしても、やるのはキャッシュパージくらいかなあ。
無料で利用できるので、興味がある方は是非設定してみてください!
コメント