WordPressなら、イライラして混乱するエラーが多いです。例えば「データベース接続の確立中にエラーが発生」と「死の白いスクリーン」があります。しかし、さらに一般的なのは、「502 Bad Gateway Error」(不正なゲートウェイ)エラーです。なぜかというと、WordPressに限らず、Gmail、Twitter、Cloudflareなどの人気なサービスなど、ウェブ全体で定期的に発生するエラーであるからです。もちろん、今回のポイントはあなたのWordPressウェブサイトへの影響です。本エラーの原因と今後の回避策については、下記をご参照ください。

502 Bad Gateway Errorとは?

ウェブサイトにアクセスするときには、ブラウザはウェブサイトがホスティングされているサーバーにリクエストを送信します。サーバーはそのリクエストを受け取り、処理し、リクエストされたリソースをHTTPヘッダーと共に返信します。HTTPには、HTTPステータスコードというものも含まれます。ステータスコードは、リクエストの状態(ステータス)を通知するものです。ステータスコードは「成功」を意味する200、または「失敗」を意味する500などがあります。

ステータスエラーコード500には意味がそれぞれ異なる種類(500, 501、 502、503、504など)が多いです。そのすべては、リクエストが受け入れられたが、満たされていない意味です。今回の「502 Bad Gateway Error」(不正なゲートウェイ)の意味は、ゲートウェイ・プロキシサーバは不正なリクエストを受け取り、これを拒否したことです。(RFC 7231、第6.6.3条)

Chromeの502 Bad Gateway Error
Chromeの502 Bad Gateway Error

502 Bad Gateway Errorの種類

同じ502 Bad Gateway Errorでも、Webサーバー、オペレーティングシステム、およびブラウザーがそれぞれ異なる為、言い方が少し変わってしまう場合があります。意味はもちろん変わりません。ウェブ上で見かけることのできる種類の例をいくつか挙げます:

  • “502 Bad Gateway”
  • “Error 502”
  • “HTTP Error 502 – Bad Gateway”
  • “502 Service Temporarily Overloaded”
  • “502 Proxy Error”
  • 空白の白い画面
  • “502 Server Error: The server encountered a temporary error and could not complete your request”
  • “HTTP 502”
  • Temporary Error (502)
  • 502. That’s an error
  • 502 bad gateway Cloudflare
  • Bad Gateway: The proxy server received an invalid response from an upstream server

「502 server error」とういう表示の場合もあります。

Chromeの502 Server Error
Chromeの502 Server Error

このようなメッセージもあります: 「502 – Web server received an invalid response while acting as a gateway or proxy server. There is a problem with the page you are looking for, and it cannot be displayed. When the Web server (while acting as a gateway or proxy) contacted the upstream content server, it received an invalid response from the content server.」

502-ウェブサーバは不正な応答を受け取った
502-ウェブサーバは不正な応答を受け取った

Twitterは、「Twitter is over capacity.」(Twitterは処理能力の限界を超えています)など、502 Bad Gateway Errorの独特なメッセージを表示します。間違いなくユーザーフレンドリーですね。

Twitterは処理能力の限界を超えています
Twitterは処理能力の限界を超えています (画像出典: Softpedia)

Googleの表示は次のとおりです:「502. That’s an error. The server encountered a temporary error and could not complete your request. Please try again in 30 seconds. That’s all we know.」

Googleの502エラー
Googleの502エラー

502 ErrorのSEOへの影響

WordPressのメンテナンスモードの際に使用され、メンテナンスが終わったらもう一度確認するようにGoogleに指示する503エラーとは異なり、すぐにでも修正されないと、500エラーがSEOに悪影響を及ぼす可能性があります。ウェブサイトが例えば10分間だけダウンしていて、その間にクロールされていても、ページが単にキャッシュからクロールされます。あるいは、Googleは再クロールする時間さえないかもしれません。この場合には、何も問題ありません。

しかし、ウェブサイトが長期間(たとえば6時間以上も)ダウンしている場合には、Googleがその502エラーをサイトレベルの問題として扱うことがあります。これはランキングに影響を与える恐れがあります。500エラーが繰り返されることを心配している方は、まず原因を特定し、下記の解決方法を実施してみてください。

502 Bad Gateway Errorの解決方法について

502 Bad Gateway Errorは通常ネットワーク側またはサーバー側の異常ですが、お客様側で発生する場合もあります。今回は両方についてご説明します。502 Bad Gateway Errorの一般的な原因と解決方法を是非ご確認ください。

1. ページを再読み込みする

これは当たり前のことかもしれませんが、502 Bad Gateway Errorが発生したときに試しておくべき最も簡単な対策の1つは、1分ほど待ち、ページを再読み込みすることです(F5またはCtrl + F5)。ホストまたはサーバーが過負荷になっているだけで、ウェブサイトがすぐに戻ってくる可能性があります。待っている間に、別のブラウザでもアクセスしてみて、ブラウザ異常を考慮から外すことができます。

もう一つのできることは、downforeveryoneorjustme.comにあなたのウェブサイトを貼り付けることです。このウェブサイトでは、あなたのウェブサイトが本当にダウンしているのか、あなたの側の問題なのか確認できます。

downforeveryoneorjustme
downforeveryoneorjustme

2. ブラウザのキャッシュをクリアする

ブラウザのキャッシュをクリアすることも、ウェブサイトのデバッグを始める前の便利なトラブルシューティング手段の一つです。各ブラウザでの手順はこちらです:

3. DNS異常

502 Bad Gateway Errorは、ドメインの正しいIPへの解決ができないなど、DNS異常を原因に発生することもあります。WordPressウェブサイトを移行したばかりの場合は、完全に伝播するまでに待つしかありません。(場合により最大24時間もかかることがあります。)DNSレコードのTTL値によります。

ローカルDNSキャッシュをフラッシュすることも試してみる価値があります。ブラウザのキャッシュをクリアするのと同様です。

Windowsでは、Command Promptを開き、次のように入力します:

ipconfig /flushdns
Command promptでDNSをフラッシュする
Command promptでDNSをフラッシュする

成功した場合は、「Successfully flushed the DNS resolver Cache」(DNS解決キャッシュが正常にフラッシュされました」と表示されます。

macOSご利用の方は、ターミナルに次のように入力してください:

dscacheutil -flushcache

注:Macには成功した場合のメッセージはありません。

最後に、一時的にDNSサーバーを変更することもできます。DNSサーバーはISPにより自動的に割り当てられますが、これらを一時的にGoogleなどのパブリックなDNSサーバーに変更してみることができます。実は、GoogleのパブリックなDNSを長期間使用する方もいます。プレミアムDNS伝播をお持ちの方なら、その方は速いです。

4. ホスティング会社に確認する

502 Bad Gateway Errorが発生する主な理由は、Webホスト側の異常です。クエリー、スクリプト、またはリクエストに時間がかかりすぎるため、サーバーによりキャンセルまたは強制終了されることがあります。ホスティング会社の多く、特に共有ホスティング会社は、 「強制終了スクリプト」というものを採用しています。強制終了スクリプトは基本的に、ウェブサイトをダウンさせたり他のユーザーに影響を与えないように、一定期間後にリクエストを強制終了させるものです。Twitterで「悪いゲートウェイ」を検索すると、ホスティング会社に本エラーの連絡をしているツイートが毎日何千もの出てきます。

502 Bad Gateway Errorのツイート
502 Bad Gateway Errorのツイート

Kinstaへのウェブサイトの移行を検討する価値のある理由の一つは、Kinstaが各ウェブサイトに独立したLXDホストとLXCソフトウェアコンテナを使っていることです。つまり、各WordPressウェブサイトがその稼働に必要なソフトウェア(Linux、NGINX、PHP、MySQL)のある、隔離されている専用コンテナに保管されます。リソースは100%プライベートで、他のユーザのウェブサイトまたはあなたの各ウェブサイトとも共有されません。これにより、502 Bad Gateway Errorの発生可能性が大幅に減少します。 当社が共有ホストのような強制終了スクリプトを実行していおりません。万が一、あなたのウェブサイトの1つがダウンしていても、他のウェブサイトへの影響はありません。

ホスティング会社側で502 Bad Gateway Errorが発生するもう一つの理由は、サーバがダウンしているか接続されていないためにサーバが利用不可能なことです。この場合は、WordPressホスティング会社のステータスページを確認するか、サポートチケットを開くことをお勧めします。

5. CDNまたはファイヤーウォールを一時的に無効にする

また、コンテンツ配信ネットワーク(CDN)の異常の可能性もあります。サードパーティ製のCDNプロバイダをご利用の場合は、CDNまたはファイヤーウォールを一時的に無効にすることにより、対応しやすいです。たとえば、当社のメンバーが無料のCDN enablerプラグインが大好きです。本プラグインをご利用の場合は、単にプラグインを無効にしウェブサイトを確認するだけです。ウェブサイトのダッシュボードにアクセスできない場合は、SFTP経由でウェブサイトにログインし、プラグインのフォルダの名前をcdn-enabler_oldに変更します。これにより、一時的にCDN接続が無効になります。WP Rocket及びその他のプラグインも同様です。

プラグインのフォルダの名前を一時的に変更する
プラグインのフォルダの名前を一時的に変更する

Cloudflareなど、DDoS保護または完全なプロキシサービスを提供している会社でも、追加のファイアウォールがあるため、同じエラーが発生することがあります。Cloudflareの無料のプランでたまに発生することがわかりました。残念ながら、Cloudflareは完全なプロキシサービスであるため、単に無効にする簡単な方法はありません。

しかし、Cloudflareに問い合わせをする前に、Cloudflare関係の502 Bad Gateway Errorが以下に示すように2種類もあることを覚えておいてください。

Cloudflareの502 Bad Gatewayエラー(種類その1)

次の画面が表示された場合、Cloudflare側の異常に違いありません。顧客サポートにお問い合わせください。現在停止しているかについてはCloudflareのステータスページを確認してください。

502 Bad Gatewayエラー
502 Bad Gatewayエラー

Cloudflareの502 Bad Gatewayエラー(種類その2)

次の画面が表示された場合、ホスティング会社側に発生した異常です。

ホスティング会社側のCloudflareの502 Bad Gateway
ホスティング会社側のCloudflareの502 Bad Gateway

GoDaddyのファイヤーウォール

こちらもHTTPの502エラーとGoDaddyのファイアウォールの例です。タイムアウトによるこの異常は実際に発生しているのはファイアウォールではなく、オリジンサーバ(ホスティング会社)です。

HTTP 502とGoDaddyのファイヤーウォール
HTTP 502とGoDaddyのファイヤーウォール

6.プラグインとテーマを確認する

サーバーがスクリプト及びクエリをキャンセルするよくある理由は、サードパーティ製のプラグインまたはテーマの悪いコードです。誤って設定されたキャッシュプラグインが502エラーを生成することもみたことがあります。トラブルシューティングするには、すべてのプラグインを無効にすることができます。プラグインを無効にするだけでは、データを失うことはありません。

管理画面にアクセスできる場合は、「プラグイン」をアクセスし、「一括操作」メニューの「無効にする」を選択するだけです。これにより、すべてのプラグインが無効になります。これで問題が解決した場合は、原因を特定する必要があります。プラグインを1つずつ起動し、起動し始めた度にウェブサイトを再読み込みします。502 Bad Gateway Errorが再発すると、原因となるプラグインを特定できました。そこで、プラグインの開発者に問い合わせするか、WordPressリポジトリでサポートチケットを作成することができます。

すべてのプラグインを無効にする
すべてのプラグインを無効にする

管理画面にアクセスできない場合は、FTP経由でサーバにログインし、プラグインフォルダの名前を「plugins_old」などに変更する必要があります。その後、ウェブサイトを再度確認してください。これでエラーが回復した場合には、各プラグインを1つずつテストする必要があります。プラグインフォルダの名前を「plugins」に戻し、その中の各プラグインのフォルダ名を順番に変更します。

プラグインのフォルダ名を変更する
プラグインのフォルダ名を変更する

プラグイン、テーマ、WordPressのコアが常に最新版であるようにしてください。または、ご利用のPHPバージョンがサポートされていることもご確認ください。不明点がございましたらホスティング会社にお問い合わせください。Kinstaでは、New Relicなどのトラブルシューティング方法を採用し、お客様の制限異常を引き起こすプラグイン、クエリ、またはスクリプトを特定します。独自のカスタムのNew Relicキーを使用することも可能です。

時間のかかるデータベースへのクエリ
時間のかかるデータベースへのクエリ

プラグインのクエリまたはコードの異常が本エラーの原因である場合は、対応はWordPressの開発者に任せる必要があります。

7. ログを確認する

また、エラーログを活用することもできます。Kinstaのお客様は、MyKinstaダッシュボードのログビューアを使用し、簡単にエラーが確認できます。特にウェブサイトのプラグインに起因するエラーの場合には、非常に便利です。

502 Bad Gateway Errorの発生時にサーバーエラーを確認する
502 Bad Gateway Errorの発生時にサーバーエラーを確認する

あなたのホストにはロギングツールがない場合は、次のコードをwp-config.phpファイルに追加することによりロギングを有効にすることもできます。

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

WordPressのデバッグモードの有効化の詳細については、こちらのステップバイステップのチュートリアルをご覧ください。

ログは通常、/wp-contentディレクトリにあります。Kinstaと同様に、「logs」という専用のフォルダがある場合もあります。

wordpressエラーログフォルダsftp

また、ApacheとNGINXのログファイルも確認できます。これらのふぁいつの一般的な場所は:

  • Apache: /var/log/apache2/error.log
  • NGINX: /var/log/nginx/error.log

Kinstaのお客様には、502エラーの合計数と頻度を把握するに当社の分析ツールもご利用いただけます。トラブルシューティングすべき発生中の異常なのか、解決済みの異常なのか確認できます。

レスポンス分析500エラーの内訳
レスポンス分析500エラーの内訳

8. PHPを再起動する

最後に、PHPを再起動することもできます。Kinstaのお客様は、MyKinstaダッシュボードのツールメニューを使用し、PHPを簡単に再起動できます。あなたのホストがこれを提供しない場合は、サポートチケットを開いてPHPを再起動するように頼むことができます。

PHPを再起動する
PHPを再起動する
PHPを再起動する
PHPを再起動する

9. PHPのタイムアウト異常

PHPのタイムアウト異常は、サーバー上の単一のPHPプロセスが、PHPコンフィギュレーションで設定されたmax_execution_timeまたはmax_input_timeより長く実行された場合に発生します。大規模のWordPressインポートを行っている場合には、よくある現象です。この現象が発生したときに、502 Bad Gateway Errorが表示されます。PHPのタイムアウト異常が発生すると、上記の値を増やすことを検討してください。

サーバーの設定値またはその設定値の増加については、現在のWordPressホストにお問い合わせください。Kinstaでは、上記の値はデフォルトで300秒(5分)に設定されています。当社のプラットフォームで利用可能な最大のPHPタイムアウト値は、ホスティングプランにより異なります。

まとめ

ご覧のとおり、WordPressウェブサイトの502 Bad Gateway Errorを復帰できる手段がいくつかあります。本エラーはお客様側の異常ではなく、ホスティング会社側の異常の場合が多いです。サードパーティ製のプラグイン及びテーマの悪いコードまたは最適化されていないクエリにもご注意ください。見逃したことはありますか。502 Bad Gateway Error のいい解決方法をご存じでしたら、是非コメントを書いて教えてください。