サイト訪問者のブラウザに「Error 520」が表示される場合、オリジンサーバーから空のレスポンスや不明なレスポンス、あるいは想定外のレスポンスが返されたことを受けて、Cloudflare がエラーメッセージを表示している状態を意味します。

520エラーが発生した場合は、まず原因を特定するためのトラブルシューティングを行い、その上で、以下の手順に沿って対処することができます。

520エラーのトラブルシューティング方法

520エラーはサーバーの問題が原因で発生するため、エラーログを調べることでトラブルシューティングできます。

ウェブサイトの520エラー表示例
ウェブサイトの520エラー表示例

Cloudflareを無効にする

トラブルシューティングを開始する前に、まずは Cloudflare を一時的に無効化しましょう。Cloudflare を介さない状態でも問題が再現するかどうかを確認することで、根本的な原因の特定に役立ちます。

ステップ1

Cloudflareにログインし、該当のサイトを選択します。

Cloudflareで該当のサイトを選択
Cloudflareで該当のサイトを選択

ステップ2

DNS」>「レコード」を開き、該当のレコードの右側にある「編集」をクリックして展開し、「プロキシ ステータス」欄のオレンジ色の蜘蛛のアイコンの横にあるトグルをオフにします。雲がグレーに変われば、Cloudflare は無効化されています。

オレンジ色の雲をクリックしてCloudflareを無効にする
オレンジ色の雲をクリックしてCloudflareを無効にする

Cloudflareを一時停止する

あるいは、ログイン後にCloudflareを一時停止することもできます。

ステップ1

先ほどと同様に、Cloudflareにログイン後、該当のサイトを選択します。

Cloudflareで該当のサイトを選択
Cloudflareで該当のサイトを選択

ステップ2

そのまま「概要」ページを下にスクロールして、「高度な操作」セクションの「Cloudflare を一時停止する」をクリックします。

Cloudflareを一時停止する
Cloudflareを一時停止する

ステップ3

表示される内容を確認の上、「一時停止」をクリックして確定します。

「確認」をクリックして、Cloudflareを一時停止する
「確認」をクリックして、Cloudflareを一時停止する

開発モードに切り替える

Cloudflareの一時停止も無効化も行いたくない場合は、開発モードに切り替えます。開発モードでは、Cloudflareが有効をにしたまま、520エラーのトラブルシューティングを行うことができます。

ステップ1

Cloudflareにログインした後、ページの上部にある「Caching」>「構成」に移動します。

「Caching」>「構成」画面に移動
「Caching」>「構成」画面に移動

ステップ2

開発モード」セクションまで下にスクロールして、トグルをオンにします。

トグルをクリックして、開発モードをオンにする
トグルをクリックして、開発モードをオンにする

サーバーのエラーログを確認する

Cloudflareを無効にするか、一時停止するか、開発モードに切り替えたら、サーバーのエラーログを確認し、520エラーのトラブルシューティングを行います。

エラーログの場所はサーバーによって異なります。アクセス方法がわからない場合は、ご利用のサーバーに確認してください。

たとえば、cPanelを採用するサーバーをご利用の場合は、以下の手順で確認可能です。

ステップ1

cPanelにログインし、ダッシュボードで「Metrics」セクションの「Errors」を選択します。

cPanelで「Metrics」セクションの「Errors」をクリック
cPanelで「Metrics」セクションの「Errors」をクリック

ステップ2

「Errors」画面には、最大300件のエラーが新しい順に表示されます(ユーザーまたはサーバーによって設定が調整される場合は300件以上表示されることも)。

cPanelのエラーログを確認して、520エラーのトラブルシューティングを行う
cPanelのエラーログを確認して、520エラーのトラブルシューティングを行う

MyKinstaで520エラーのログを確認する

Kinstaをご利用の場合は、以下の手順でエラーログを確認してください。

ステップ1

MyKinstaにログインし、左側メニューから「サイト」をクリックし、トラブルシューティングを行うサイトを選択します。

MyKinstaの「サイト」画面でサイトを選択
MyKinstaの「サイト」画面でサイトを選択

ステップ2

ログ」画面に移動します。デフォルトでは、エラーログが表示されます。何も表示されない場合は、そのサイトではエラーが発生したことがないことを意味します。

MyKinstaのログビューア
MyKinstaのログビューア

エラーログの読み方

エラーログの各メッセージには構造があり、その構造さえ理解できれば、エラーメッセージを解釈することができます。

[Fri Oct 11 17:00:30 2019] [error] [client 123.4.56.7] error description: /path/to/file/with/error

エラーログには、まずメッセージの日時が表示され、その後にメッセージの重大度を示すLogLevel ディレクティブが続きます。

次に、問題の原因となったクライアントのIPアドレスが記載されます。

最後に、実際のエラーメッセージの内容が表示されます。ここには、エラーの影響を受けたファイルのパスが含まれている場合もあります。

エラーログに表示されるLogLevelの重大度は、以下のとおりです。

  • Emerg(緊急)—緊急度の高いエラーであり、サーバーが利用できない状態

  • Alert(警報)—直ちに対応が必要な状態

  • Crit(重大)—重大な問題が発生していることを示す

  • Error(エラー)—エラーが発生している

  • Warn(警告)—重大ではないものの、注意が必要な問題

  • Notice(注意)—サーバーは正常に動作しているが、重要な通知事項あり

  • Info(情報)—一般的な情報を示す

  • Debug(デバッグ)—デバッグが有効な場合に表示される詳細情報

cURLコマンドを使って520エラーのトラブルシューティングを行う

オリジンサーバーに対してテストを実行することで、cURLコマンドを使用して520エラーのトラブルシューティングを行うことができます。

curl -vso /dev/null --user-agent "Mozilla 5.0" -H "Host: your-site.com" http://123.45.6.789/wp-login.php

「http://your-site.com」および「123.45.6.789」は、必ず実際のドメイン、およびIPアドレスに変更してください。ログインページを調整している場合は、「wp-login.php」も変更が必要です。

正常のレスポンスヘッダーは、以下のようになります。

* Hostname was NOT found in DNS cache
*   Trying 123.45.6.789...
* Connected to 123.45.6.789 (123.45.6.789) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: your-site.com
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Date: Day, DD, Month Year Hour:Minute:Second Timezone
{ [12345 bytes data]
* Connection #0 to host 123.45.6.789 left intact

このような表示が確認できれば、サイトには正常にアクセスできており、520エラーは発生していないことを意味します。

一方で、以下の例のようなレスポンスヘッダーが表示される場合は、Cloudflareが有効な状態で 520エラーが発生していることを示しています。

* Hostname was NOT found in DNS cache
*   Trying 123.45.6.789...
* Connected to 123.45.6.789 (123.45.6.789) port 80 (#0)
> GET /login HTTP/1.1
> User-Agent: Mozilla 5.0
> Accept: */*
> Host: your-site.com
>
* Empty reply from server
* Connection #0 to host 123.45.6.789 left intact

HARファイルの生成方法

HARとはHTTPアーカイブファイルのことで、オリジンサーバーへ直接送信されたリクエストや、Cloudflareを経由したリクエストの記録が含まれています。

HARファイルは、オリジンサーバーからのレスポンスヘッダーと、プロキシとして動作しているCloudflareからのレスポンスヘッダーを比較できるため、トラブルシューティングに役立ちます。

また、520エラーの原因がヘッダーサイズの過大であるかどうかを確認するためにも使用されます。

HARファイルは、以下の手順でブラウザから作成できます。

Chrome

ステップ1

Chromeを開いて任意の場所を右クリックし、「検証」を選択します。

Chromeを右クリックして「検証」を選択
Chromeを右クリックして「検証」を選択
ステップ2

デベロッパーツールが開いたら、「ネットワーク」タブをクリックして、左上の丸が赤になっていることを確認します。グレーになっている場合は、クリックしてください。

「ネットワーク」タブのボタンが赤になっていることを確認
「ネットワーク」タブのボタンが赤になっていることを確認
ステップ3

記録ボタンの横にある「ログを保持」にチェックを入れて、左側にある禁止マーク(ネットワーク ログを消去)をクリックします。

「ログを保持」を選択して前のメッセージをクリア
「ログを保持」を選択して前のメッセージをクリア
ステップ4

520エラーが表示されるページを読み込み、開発者ツールのメッセージ画面の任意の場所を右クリックします。

コンテンツと一緒に HAR としてすべて保存」を選択し、ファイルをコンピューターに保存します。

HARファイルをコンピューターに保存する
HARファイルをコンピューターに保存する

Firefox

ステップ1

Firefoxを開き、ページの任意の場所を右クリックして、「調査」を選択します。

ページを右クリックして「調査」を選択
ページを右クリックして「調査」を選択
ステップ2

ネットワーク」タブに移動し、520エラーが表示されるページにアクセスします。パネルのメッセージを右クリックして、「HAR 形式ですべて保存」を選択し、ファイルをコンピュータに保存します。

右クリックしてHAR形式で保存
右クリックしてHAR形式で保存

Edge

ステップ1

Edgeブラウザを開き、ページを右クリックします。「要素の検査」を選択します。

右クリックで「開発者ツールで調査する」を選択
右クリックで「開発者ツールで調査する」を選択
ステップ2

Network」タブに移動し、Chrome同様、左側の丸いアイコンが赤色になっていることを確認します。赤色でない場合は、クリックしてください。「Preserve log(ログを保持)」にチェックを入れて、左側の禁止マークをクリックしてメッセージをクリアします。

クリックしてログを保存し、古いメッセージを消去
クリックしてログを保存し、古いメッセージを消去
ステップ3

520エラーが発生しているページに移動します。次に開発ツールのパネルのメッセージを右クリックして、「Save all as HAR with content(コンテンツ付きのHAR形式ですべて保存」を選択し、ファイルをコンピュータに保存します。

Safari

ステップ1

Safariを開いたら、Windowsの場合はページを右クリックします。Macの場合は、上部メニューバーの「開発」>「Webインスペクタを表示」を開きます。「開発」メニューが表示されない場合は、「Safari」>「設定」に移動し、「詳細」タブの「Webデベロッパ用の機能を表示」にチェックを入れると出現します。

ステップ2

ネットワーク」タブを開き、丸の中に3つの線が入ったアイコンをクリックして、「ログを保持」を選択します。続いて、520エラーが発生しているページに移動します。

「ネットワーク」タブで「ログを保持」をオンにする
「ネットワーク」タブで「ログを保持」をオンにする
ステップ3

「書き出す」をクリックして、HARファイルをコンピューターに保存します。

HARファイルを書き出し
HARファイルを書き出し

520エラーの主な原因と解決方法

エラーログを入手できたら、まずログ内を確認し、以下のいずれかの問題が見られないか探してください。該当するものが見つかった場合は、次の手順に沿って対処します。

オリジンサーバー上のPHPアプリケーションがクラッシュしている

520エラーのよくある原因の1つは、サーバー上で動作しているPHPアプリケーションのいずれかがクラッシュしていることです。PHPを再起動することで、エラーが解消される場合があります。

ステップ1

Apacheサーバーでは、SSHを使用して以下のコマンドを入力します。

apache2ctl restart

Nginxサーバーでは、以下のコマンドを使用してPHPを再起動します。

service nginx restart

PHPをMyKinstaで再起動する

Kinstaをご利用の場合は、数回のクリックでPHPを再起動できます。

ステップ1

MyKinstaにログインし、左側メニューから「サイト」に移動し、該当のサイトを選択します。

MyKinstaの「サイト」画面でサイトを選択
MyKinstaの「サイト」画面でサイトを選択
ステップ2

ツール」画面に移動し、「PHPの再起動」をクリックします。

「ツール」画面からPHPを再起動
「ツール」画面からPHPを再起動

CloudflareのIPアドレスがホワイトリストに登録されていない

520エラーが発生するもう1つの原因として、CloudflareのIPアドレスがホワイトリストに登録されていないことが挙げられます。IPアドレスのホワイトリスト登録は可能ですが、手順はご利用のサーバーによって異なります。

IPアドレスのホワイトリスト登録方法が分からない場合や、該当する設定項目が見つからない場合は、ご利用のサーバーサービスにお問い合わせください。

なお、KinstaではCloudflareのIPアドレスはデフォルトでホワイトリストに登録されているため、この原因を心配する必要はありません。ただし、520エラーのその他の原因には影響しません。

TCPのアイドルタイムアウトが300秒未満に設定されている

520エラーの原因として、TransmissionControlProtocol(TCP)の設定が影響している可能性もあります。

TCPは、ネットワーク接続を確立し、その接続を維持するための標準プロトコルです。TCPのタイムアウトが300秒未満に設定されている場合、520エラーが発生することがあります。

TCPのサービスのタイムアウトは、CLIコマンドを使用して変更できます。

set service Service-HTTP-1 -svrTimeout 500

ヘッダーが8KBを超えている

この問題は、通常、Cookieの数が多すぎるか、Cookieのサイズが大きすぎることが原因で発生します。トラブルシューティングの際にダウンロードしたHARファイルを確認すると、これが原因かどうかを判断できます。

Cloudflareでは、ヘッダーに使用できるサイズは8KBまでに制限されています。

多数のCookieを必要とするプラグインを作成している場合や、Cookieに過剰なデータが含まれている場合は、その数やサイズを減らしてみてください。また、多くのプラグインがそれぞれCookieを使用している場合は、不要なものを削除することも検討してください(プラグインは常に品質の高いものを使用することをおすすめします)。

Elementorを使用している

WordPressサイトをElementorで編集しようとした際に、520エラー(Web server is returning an unknown error)が表示される場合は、まず別のブラウザでも同じエラーがでるかどうかを試してみてください。

それでも解決しなければ、サイトでCloudflareを使用している場合、CloudflareのRocketLoader機能が原因になっているかもしれません。

この問題は、RocketLoaderがスクリプトを自動的に非同期読み込みに変更することで発生し、その結果サイトエディターが正しく動作せず、編集できなくなることがあります。

この場合は、Cloudflareでルールを作成することで解決可能です。

  • Elementorページの場合:(サイトのURL)/elementor

  • Elementorテンプレートの場合:(サイトのURL)/?elementor_library=*

サーバーからの空の応答

この問題は、サイトからHTTPステータスコードやレスポンス本文が返されない場合に発生します。解決するには、サイトのドメインのDNS設定が正しく構成されているかを確認します。

設定の確認手順は、DNSサービスによって異なります。サーバープランにDNSが含まれている場合は、サーバーに確認してください。

DNS設定を更新した場合、変更が反映されるまで最大72時間かかることがあります。その間、サイトが最大3日間利用できなくなる可能性があります。

DNS設定を変更した後は、サイトのキャッシュをクリアします。WordPressサイトにキャッシュプラグインがインストールされている場合は、そのプラグインの手順に従ってキャッシュをクリアします。手順がわからない場合は、プラグインのドキュメントを参照してください。

サーバーのコントロールパネルからキャッシュをクリアできる場合もあります。これについても、手順がわからない場合は、サーバーに問い合わせてみてください。

Kinstaをご利用の場合は、ログイン後、「サイト」をクリックして、該当のサイトを選択します。それから「キャッシュ」画面に移動して、「全てのキャッシュをクリア」をクリックします。

MyKinstaからサイトのキャッシュをクリア可能
MyKinstaからサイトのキャッシュをクリア可能

DNS設定を更新し、サイトが再び利用可能になった後、サイトのキャッシュをクリアしても520エラーが引き続き発生する場合は、サーバーを再起動します。

設定メニューにサーバーの再起動オプションが見当たらない場合は、Kinstaのカスタマーサポートにお知らせください。

レスポンスヘッダーの欠落

Mozillaによると、レスポンスヘッダーとは、HTTPレスポンスで使用されるHTTPヘッダーのうち、メッセージ本文の内容には直接関係しないものを指します。Age、Location、Serverなどのレスポンスヘッダーは、レスポンスに関する詳細な情報を提供するために使用されます。

レスポンスヘッダーが欠落する原因はさまざまです。

この問題に対処するには、Fiddlerなどのデバッグツールを使用して問題を解析し、原因を特定したうえで修正するのが有効です。

サーバーが適切なHTTPエラーレスポンスを返しません

サーバーが無効なエラーレスポンスを送信したとき、520エラーが発生する場合があります。メッセージがHTTPレスポンスコードの標準リストに適合しなかったことを意味します。

サーバーが原因であるか、PHPアプリケーションやWordPressサイトで使用されているプラグインなど、サーバー上のものが原因である可能性があります。

修正するための不適切なエラーコードのソースが見つからない方は、サポートまでお問い合わせください。

Cloudflareを再度有効にする

エラーが再発するかどうかを確認します。再びエラーが表示される場合は、Cloudflareを無効のままにして、引き続きトラブルシューティングを行います。

520エラーが解消されている場合は、Cloudflareを再度有効にします。

ステップ1

Cloudflareにログインします。アカウント内で雲のアイコンをグレーにしてCloudflareを無効化した場合は、まず一覧から対象のサイトを選択します。

Cloudflareを有効にするサイトを選択
Cloudflareを有効にするサイトを選択

ステップ2

DNS」>「レコード」に移動し、該当のレコードの右にある「編集」して展開し、グレーの雲のアイコンの横にあるトグルをクリックして、Cloudflareを再度有効にします。

グレーの雲をクリックして、Cloudflareを有効にする
グレーの雲をクリックして、Cloudflareを有効にする

一時停止したCloudflareを再開する

ステップ1

Cloudflareを一時停止している場合は、Cloudflareにログインし、ダッシュボードに表示されている対象のサイトをクリックして再開します。

Cloudflareを復元するサイトを選択する
Cloudflareを復元するサイトを選択する

ステップ2

そのまま「概要」ページを下にスクロールして、「高度な操作」セクションの「Cloudflare を有効にする」をクリックします。

Cloudflareを再度有効化
Cloudflareを再度有効化

開発モードをオフにする

ステップ1

Cloudflareの開発モードに切り替えていた場合は、開発モードをオフにします。例によってログイン後、該当のサイトを選択します。

該当のサイトを選択する
該当のサイトを選択する

ステップ2

Caching」>「構成」に移動します。

「Caching」>「構成」に移動
「Caching」>「構成」に移動

ステップ3

開発モード」までしたにスクロールし、トグルをオフにします。

トグルをクリックして開発モードをオフにする
トグルをクリックして開発モードをオフにする

それでも解決しない場合

エラーが解決しない場合は、Cloudflareのサポートに問い合わせてください。

その際は、以下の情報を提供するとスムーズです。

  • エラーが発生した際にアクセスしていたリソースの完全なURL

  • 520エラーメッセージが表示されたページに記載されているCloudflareのRayID

  • http://your-site.com/cdn-cgi/traceの出力結果(「your-site.com」は実際のドメイン名に置き換える)

  • HARファイル2つ(Cloudflareを有効にした状態のものと、無効にした状態のもの)

まとめ

520エラーはCloudflareのエラーとして表示されるため分かりにくいことがありますが、実際にはサーバー側の問題が原因で、Cloudflareがオリジンサーバーに正常に接続できない場合に発生します。

今回ご紹介した手順は、520エラーの一般的な原因に対する主な解決策です。これらを実践してもエラーが解決しない場合は、Cloudflareまたはご利用中のサーバーに問い合わせてください。

関連記事:WordPressでCloudflareのAPOを設定する方法─パフォーマンス最大300%向上

Matteo Duò

Head of Content at Kinsta and Content Marketing Consultant for WordPress plugin developers. Connect with Matteo on Twitter.