この記事では、エックスサーバーとCloudflareを併用している環境で、WordPressの管理画面にアクセスできなくなった際の解決策を詳しく解説します。

具体的には、エックスサーバー側のセキュリティ設定を見直し、Cloudflare側で海外からのアクセスをブロックする方法をご紹介します。この設定を行うことで、サーバーのセキュリティとCloudflareのメリットを両立させることができます。

なぜ問題が起きるのか?

この問題の多くは、エックスサーバーのセキュリティ機能Cloudflareの仕組みが衝突(バッティング)することで発生します。

エックスサーバーには、不正アクセス対策として「WordPressセキュリティ設定」があり、その中に「国外IPアドレスからのアクセスを制限する」機能があります。

一方、Cloudflareを有効にすると、すべてのアクセスは一度Cloudflareのサーバーを経由してから、エックスサーバーに届きます。このとき、エックスサーバーから見ると、アクセス元のIPアドレスは「訪問者のIPアドレス」ではなく「CloudflareのIPアドレス」に見えてしまいます。

Cloudflareのサーバーは世界中に分散配置されているため、そのIPアドレスは海外のものと判定されることがほとんどです。その結果、エックスサーバーの「国外IPアクセス制限」が作動し、正常なアクセスであってもブロックされてしまうのです。

解決への2つのステップ

この問題を解決するには、以下の2つのステップで設定を行います。

  1. エックスサーバー側のIP制限を無効化する
  2. Cloudflare側で海外からのアクセスをブロックするルールを作成する

セキュリティに関する設定を一元的にCloudflareに任せることで、設定の競合を防ぎ、管理をシンプルにします。

ステップ1:エックスサーバー側の設定を無効化する

まずは、問題の原因となっているエックスサーバー側の設定を変更します。

  1. エックスサーバーの「サーバーパネル」にログインします。
  2. WordPressの項目にある「WordPressセキュリティ設定」をクリックします。
  3. 設定を変更したいドメインを選択します。
  4. 以下の2つの設定を「OFFにする」または「無効にする」に変更してください。
    • 国外IPアクセス制限設定
      • 特に「管理画面(/wp-admin/)アクセス制限」を必ず無効にしてください。
    • REST API アクセス制限
      • これを無効にしないと、WordPressの投稿画面で「更新」ボタンを押した際に、「更新に失敗しました。 返答が正しい JSON レスポンスではありません。」というエラーが表示され、記事の保存ができなくなる場合があります。忘れずに無効化しましょう。

これで、エックスサーバー側でのブロックは解除されました。しかし、このままでは誰でも海外からアクセスできる状態なので、次にCloudflareでアクセス制限を設定します。

ステップ2:CloudflareでWAFカスタムルールを作成する

次に、Cloudflareのダッシュボードで、日本からのアクセスのみを許可する(=海外からのアクセスをブロックする)ためのルールを作成します。

  1. Cloudflareのダッシュボードにログインし、設定したいドメインを選択します。
  2. 左側のメニューから [セキュリティ][セキュリティルール] を選択します。
  3. [カスタムルール] タブをクリックし、[ルールを作成] ボタンを押します。

(ここに実際の画面キャプチャを挿入すると、より分かりやすくなります)

ルールの設定

以下の通りにルールを設定していきます。

  • ルール名:
    • 管理しやすい名前を入力します。後から見て何のルールか分かるようにしておきましょう。
    • 例: Allow Japan Only国外アクセスブロック
  • 条件 (If…):
    • ここで「もし~ならば」というルールの発動条件を指定します。
    • フィールド: (Country) を選択します。
    • 演算子: 等しくない (does not equal) を選択します。
    • 値: 日本 (Japan) または国コード JP を選択します。
    この設定は、「もしアクセス元の国が、日本と等しくないならば」という意味になります。
  • アクション (Then…):
    • 上記の条件に一致した場合に、どのような処理を行うかを指定します。
    • アクションを選択: ブロック (Block) を選択します。
    この設定は、「そのアクセスをブロックする」という意味になります。

全体として、このルールは「アクセス元の国が日本でない場合、そのアクセスをブロックする」という設定になります。

設定が完了したら、[展開] または [保存] ボタンをクリックしてルールを有効化します。

以上で、すべての設定は完了です。

まとめ

Cloudflareを導入した際に発生するWordPressへのアクセス拒否問題は、サーバーとCloudflareのセキュリティ設定が競合することで起こります。

この問題は、

  1. エックスサーバー側の「国外IPアクセス制限」と「REST API アクセス制限」を無効化する。
  2. CloudflareのWAFで「日本以外の国からのアクセスをブロックする」カスタムルールを作成する。

という手順で解決できます。

これにより、Cloudflareの高速化や高度なセキュリティ機能を最大限に活用しつつ、安全で快適なサイト運営が可能になります。同様のトラブルでお困りの方は、ぜひこの設定を試してみてください。