521エラーは、WordPressウェブサイトのサーバーがCloudflareとの接続を拒否したときに表示されるCloudflare特有のエラーメッセージです。
本記事では下記について説明します。
521「ウェブサーバがダウンしています」とは?
前述のように、521エラーメッセージはCloudflareに特有のエラーメッセージです。
簡単にいうと、ウェブブラウザがCloudflareに正常に接続できましたが、Cloudflareはオリジンウェブサーバ(WordPressウェブサイトのサーバ)に接続することができませんでした。
具体的には、CloudflareはWordPressウェブサイトのサーバーに接続しようとしましたが、「接続拒否エラー」が返されました。
Cloudflareはウェブサイトに接続できないため、ウェブサイトを訪問者に表示することができません。代わりに521エラーメッセージが表示されます。

521エラーメッセージの原因は?
521エラーメッセージの考えられる原因は2つあります。
その一つ目はWordPressウェブサイトのサーバーがダウンしていることです。すべての設定が正しくても、WordPressウェブサイトのサーバーがオフラインであれば、Cloudflareは接続することができません。
二つ目は、ウェブサーバーは正常に動作しているが、何らかの理由でCloudflareのリクエストをブロックしていることです。Cloudflareの基本機能のせいで誤ってCloudflareのIPアドレスをブロックするサーバー側のセキュリティソリューションもあります。
Cloudflareはリバースプロキシであるため、オリジンサーバーへのトラフィックは、個々の訪問者の固有のIPアドレスからのものではなく、少数のCloudflareのIPからのもののように見えてしまいます。そのため、限られた数のIPアドレスからの大量のトラフィックを攻撃と見なしてブロックするセキュリティソリューションもあります。
そのせいでCloudflareは接続できず、521エラーメッセージが表示されます。
CloudflareとWordPressの521エラーメッセージの処理について
さて、WordPressの521エラーの概要を理解した為、処理に入ります。
ステップ1:オリジンサーバーがオンラインであるをテストする
先に進む前に、WordPressウェブサイトのサーバーがオンラインで正常に機能していることを確認します。そうでない場合は、それ以上のトラブルシューティング手順を調べても意味がありません。
これをテストするには、cURLコマンドを実行します。MacまたはLinuxをご利用の方は、ターミナルから直接実行できます。
WindowsにはデフォルトではcURLがインストールされていません。インストールすることはできますが、KeyCDNのオンラインHTTPヘッダーチェックツールを使用した方がしやすいかもしれません。
http://1.2.3.4を記入するだけです。(1.2.3.4をサーバーの実際のIPアドレスに変更してください。)

Kinstaのお客様に「サイト」タブでサーバーのIPアドレスを確認いただけます:

または、Cloudflareのウェブダッシュボードの「DNS」にあるドメインの「Aレコード」から取得することもできます。
サーバーが起動している場合は、HTTP 200と表示されます。Kinstaのお客様なら、「404 Not Found」と表示されます。これもウェブサーバーが起動していることを意味します。(そのIPのページは存在しないだけです。)

異常が発生した場合は、「ホストが見つかりません」または「接続に失敗しました」などのメッセージが表示されます。

サーバー異常の疑いがある場合は、ご利用のサーバー会社のサポートチームに連絡してください。(Kinstaのお客様にはダッシュボードのIntercomウィジェットを使用してサポートチームに連絡いただけます。)
ステップ2:サーバーのファイアウォールでCloudflareのすべてのIP範囲をホワイトリスト化する
WordPressウェブサイトのサーバーが正常に機能していてもウェブサイトにアクセスしようとするときに521エラーメッセージが表示される場合の次のステップは、CloudflareのすべてのIP範囲をホワイトリストに登録することです。
CloudflareのすべてのIP範囲についてはこちらをご参照ください。
.htaccess、iptablesまたはファイアウォールでこれらのIPアドレスがブロックされていないことを確認します。また、サーバー会社がCloudflareのIPアドレスからのIPリクエストをレート制限したりブロックしたりしないことも確認しましょう。
やり方がわからない方は、ご利用のサーバー会社のサポートチームに連絡してください。Kinstaでは、これらのIP範囲はすでにホワイトリストに登録されています。
ステップ3:特別な手段を検討する
最後になりますが、サーバーの設定に応じた具体的な技術的手順をいくつかご紹介します。
1)CloudflareのHTTPSを使用し始めたばかりの場合、オリジンサーバーがCloudflareのIPアドレスのポート443へのアクセスを許可するように設定されていない可能性があります。これを許可するようにファイアウォールを設定できない方は、Cloudflareで「Full SSL」ではなく「Flexible SSL」を使用してみてください。
2)該当する場合は、Bad Behaviorまたはmod_securityのバージョンは最新版であることを確認してください。
3)mod_antilorisまたはmod_reqtimeoutのApacheモジュールをご利用の方は、それらのモジュールを無効にしてアンロードしてください。
結論
Kinstaのお客様で、上記の調整を実施したても521エラーが発生している方は、KinstaのダッシュボードのIntercomチャットウィジェットで当社のサポートチームまでお問い合わせください。対応いたします。