ウェブサイトには、イライラしたり混乱したりする様々なエラーがつきもの。死の真っ白画面(WSOD)やデータベース接続の確立エラーなどは特に厄介です。
中でも今回取り上げる「502 Bad Gateway」は、比較的遭遇する可能性の高いエラーで、WordPressサイトに限らず、Gmail、X(Twitter)、Cloudflareなどの人気サービスでも見られます。
早速この502エラーの原因、そして素早く解決する方法を掘り下げていきましょう。
「502 Bad Gateway」エラーとは
「502 Bad Gateway」エラーは、サーバーがインバウンドサーバーから無効なレスポンスを受け取ったことを意味します。
The Internet Engineering Task Force(IETF、インターネット技術特別調査委員会)は、「502 Bad Gateway」エラーを次のように定義しています(英語原文の日本語訳)。
502(Bad Gateway)ステータスコードは、サーバーがゲートウェイまたはプロキシとして動作している際、リクエストを処理しようとしてアクセスしたインバウンドサーバーから、無効なレスポンスを受け取ったことを示す
ウェブサイトにアクセスするたびに、ブラウザはウェブサーバーにリクエストを送信します。ウェブサーバーはリクエストを受信・処理し、リクエストされたリソースをHTTPヘッダーとHTTPステータスコードとともに送り返します。HTTPステータスコードは通常、何かしらの問題が発生しない限りは表示されません。基本的には、問題が発生したことを診断方法のコードとともに通知するためのものです。
エラーコード | 502 Bad Gateway |
エラーの種類 | サーバーサイドエラー |
エラーメッセージの種類 | 502 Bad Gateway Error 502 HTTP Error 502 – Bad Gateway 502 Service Temporarily Overloaded 502 Proxy Error A blank white screen 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 |
エラーの原因 | サーバーの過負荷 ブラウザの問題 DNSの問題 ウェブサーバーの問題 ファイアウォールによるブロック プラグインとテーマの問題 |
500番台のステータスコードにはさまざまな種類(500、501、502、503、504、508、520など)があり、それぞれが示す内容は微妙に異なりますが、概してリクエストは受け入れられたものの、サーバーがリクエストの実行を妨げたことを示しています。
500番台のステータスコードについて動画での解説もご用意しています。
「502 Bad Gateway」エラーの主な原因
このエラーの原因としては、以下のようなものが挙げられます。
- サーバーの過負荷─サーバーのリソースが不足し、クラッシュして502エラーが発生。予期せぬトラフィックの急増やメモリ不足がある。
- ブラウザの問題─ブラウザのバージョンが古い、またはブラウザのキャッシュに破損したファイルがある。
- ファイアウォールによるブロック─ファイアウォールが誤って脅威を検知し、インターネットプロバイダーやIPアドレスをブロックしている。
「502 Bad Gateway」のエラーメッセージ
「502 Bad Gateway」は、ブラウザ、ウェブサーバー、OSによって表示されるエラーメッセージが異なりますが、意味はすべて同じです。一例を見てみましょう。
- 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─ウェブサーバーがゲートウェイまたはプロキシ サーバーとして動作中に無効なレスポンスを受け取りました。お探しのページには問題があり、表示できません。ウェブサーバーが(ゲートウェイまたはプロキシとして動作しているときに)アップストリームコンテンツサーバーに問い合わせた際、コンテンツサーバーから無効なレスポンスを受信しました。(和訳)
他のサービスでは、まったく異なるメッセージが表示される場合もあります。例えばTwitter(現X)では、「Twitter is over capacity.」(容量オーバーです)というメッセージが表示されます。
Google Chromeでは、以下のように表示されることも。
502。エラーです。サーバーで一時的なエラーが発生し、リクエストを完了できませんでした。30秒後に再試行してください。(和訳)
「502 Bad Gateway」エラーが与えるSEOへの影響
WordPressのメンテナンスモード使用中に、Googleに後でクロールするように指示する503エラーとは異なり、502エラーの場合はすぐに修正しなければ、SEOに悪影響を及ぼす可能性があります。サイトが10分程度しかダウンしておらず、継続的にクロールされていれば、クローラーはキャッシュから配信されたページを取得するのが通例です。あるいは、短時間であればダウンしている間に再クロールが行われない可能性もあります。このようなシナリオでは、特に問題はありません。
ところが、サイトが長期間、例えば6時間以上ダウンしている場合、Googleは502エラーをサイトレベルの問題として認識し、対処する必要ありと判断するかもしれません。この場合はSEOに影響が出る可能性があります。502エラーの再発を防ぐには、その原因を突き止めなければなりません。次のセクションの解決策を今すぐ実行しましょう。
「502 Bad Gateway」エラーを解決するには(13の方法)
「502 Bad Gateway」エラーは通常、ネットワーク/サーバーに関する問題ですが、クライアント側に原因があることもあり得ます。そこで両方の可能性を考慮し、502エラーを解決する一般的な方法をご紹介します。
1. ページを再読み込みする
まず最初に試したいのは、1分ほど待ってからページを再読み込み(F5またはCtrl + F5)すること。ホストやサーバーに一時的に負荷がかかっているだけかもしれません。
2.サイトの稼働状況を確認する
もう一つすぐにできることは、ウェブサイトのURLを「downforeveryoneorjustme.com」に貼り付けることです。サイトがダウンしているのか、それとも自分の環境に問題があるだけなのかを確かめることができます。その他の便利ツールはこちらでご紹介しています。
3. 別のブラウザを使用してみる
また、別のブラウザを試してみてください。例えば、Google Chromeを使っていてこのエラーに遭遇した場合は、Microsoft Edgeを使ってみるなど。
別のブラウザではエラーが表示されない場合、エラーが発生した最初のブラウザを一度削除し、再インストールすることをお勧めします。
4. シークレットモードで開いてみる
シークレットモードを使用するとアクセスできる可能性があります。これでエラーが発生しない場合は、ブラウザの拡張機能が原因になっている可能性があります。
原因となっている拡張機能を特定するには、サイトが正常に開くかどうかをチェックしながら、一つずつ拡張機能を無効化にしてください。
アクセスをブロックしていた拡張機能を見つけたら、削除しましょう。
5. 別のデバイスを使用してみる
クライアント側に問題があることを想定し、別のデバイスでもアクセスしてみてください。
スマートフォンのモバイルデータを使用し、閲覧したいページにアクセスしてみます。問題なく開くことができれば、無線LANルーターの電源ケーブルを抜き、しばらく待ってから再接続して、コンピュータやその他のネットワーク機器を再起動しましょう。
これによって、エラーがネットワーク機器に起因しているのか、それとも他の何かが原因なのかを理解することができます。
6. ブラウザのキャッシュをクリアする
このようなエラーに遭遇した場合、ブラウザのキャッシュをクリアすることは常に良いアイデアです。ブラウザ別のクリア方法は、以下を参照してください。
- すべてのブラウザで1つのページを強制更新する
- Google Chromeのキャッシュをクリアする
- Mozilla Firefoxのキャッシュをクリアする
- Safariのキャッシュをクリアする
- Microsoft Edgeのキャッシュをクリアする
- Operaのキャッシュをクリアする
7. DNSの問題をチェックする
502エラーは、ドメインが正しいIPアドレスに解決されていない、あるいはDNSサーバーが応答していないなど、DNSの問題が原因かもしれません。サイトを別のホスティング会社に移行したばかりであれば、完全に伝播されるまで待ちましょう。これはDNSレコードのTTL値に依存します。
また、ローカルのDNSキャッシュもクリアしてみましょう。これはブラウザのキャッシュをクリアするのと似た要領です。
Windowsでは、コマンドプロンプトを開いて、以下を貼り付けるだけでOKです。
ipconfig /flushdns
クリアされると「Successfully flush the DNS resolver Cache」(DNSリゾルバキャッシュのフラッシュに成功しました)というメッセージが表示されます。
macOSでは、ターミナルに以下を貼り付けてください。
dscacheutil -flushcache
なお、Macでは特に成功メッセージは表示されません。
最後に、DNSサーバーを一時的に変更するのも解決策になり得ます。DNSサーバーはデフォルトでISPによって自動的に割り当てられますが、GoogleのようなパブリックDNSに変更することも可能です(Google Public DNSを長期的に使用しているユーザーも)。プレミアムDNSを使用している場合、伝播はかなり高速なのが通例です。
8. ホスティング会社に確認する
「502 Bad Gataway」エラーが発生する主な原因は、ウェブサーバーにあります。クエリ、スクリプト、リクエストに時間がかかりすぎると、サーバーによってキャンセルまたは強制終了されることがあります。多くのサーバー、特に共用サーバーでは、killと呼ばれるスクリプトを実装しています。これは、サイトをダウンさせたり他のユーザーに影響が及ばないよう、一定時間後にリクエストを終了させるものです。Xで「bad gateway」を検索すると、ホスティング会社に問題を警告する何千もの投稿を見ることができます。
Kinstaのようなホスティングサービスへの移行を検討したい理由の1つは、サイトの実行に必要なすべてのソフトウェアリソース(Linux、Nginx、PHP、MySQL)を含む隔離されたソフトウェアコンテナで実行される点にあります。つまり、各サイトに専用リソースが確保され、他のユーザーどころか、自分の他のサイト間でさえも共有されることはありません。これによって、「502 Bad Gateway」エラーが発生する確率が劇的に下がります。一部の共有サーバーのようにkillを実行することもありません。万が一あるサイトがダウンしても、他のサイトに影響を与えることもありません。
502エラーが発生する別の原因は、サーバーがダウンしている、または接続が確立されていないかのどちらかであり、単に到達できないことを意味します。この場合は、ホスティング会社のステータスページを確認するか、カスタマーサポートに問い合わせてみてください。
9.CDNまたはファイアウォールを一時的に無効にする
あるいは、コンテンツデリバリネットワーク(CDN)またはファイアウォールが原因かもしれません。サードパーティのCDNサービスを使用している場合、CDNを一時的に無効にするのが手っ取り早い方法です。例えば、CDN Enablerプラグインを使用している場合は、単に一度無効にしてサイトをテストしましょう。
WP管理画面にアクセスできない場合は、SFTP経由でサイトにログインし、プラグインのフォルダ名を「cdn-enabler_old」に変更すると、CDN接続が一時的に無効になります。WP RocketやCDNに接続している他のプラグインも同様です。
これは、DDoS対策を実装しているサービスや、Cloudflareのような完全なプロキシサービスでも発生する可能性があります。特にCloudflareの無料プランでこのエラーが時折発生する事例があり、Cloudflareは完全なプロキシサービスであるため、簡単には無効にすることができません。
ただし、Cloudflareの「502 Bad Gateway」エラーには、以下2つのパターンがあります。
Cloudflareの「502 Bad Gateway」エラー1
以下の画面が表示された場合、原因はCloudflare側にあります。Cloudflareのステータスページにアクセスし、現在障害が発生しているかどうかを確認してみてください。
Cloudflareの「502 Bad Gateway」エラー2
以下の画面が表示された場合は、サーバーに原因があります。
GoDaddyのファイアウォール
GoDaddyのファイアウォールもこれに該当します。実際にはファイアウォール自体ではなく、タイムアウトによるオリジンサーバー(ホスティング会社)に問題があります。
10. プラグインとテーマを確認する
通常、スクリプトやクエリがサーバーによってキャンセルされる原因は、ウェブサイト、おそらくサードパーティのプラグインやテーマの質の良くないコードにあります。また、キャッシュプラグインの設定ミスによって502エラーが引き起こされることもよくあります。この問題を解決するには、すべてのプラグインを無効にします。無効化と言っても、一時的にプラグインを停止するだけなので、データが失われることはありません。
WP管理画面にアクセスできる場合は、「プラグイン」ページに移動し、「一括操作」のドロップダウンから「停止」を選択してください。これですべてのプラグインを無効化できます。これでエラーが消える場合は、原因となっているプラグインを突き止めましょう。プラグインをひとつずつ有効にしながら、その都度サイトを再読み込みしていきます。有効化するとエラーが表示されるプラグインが原因です。特定したら、そのプラグインの使用をやめるか、プラグイン開発者に問い合わせることをお勧めします。
管理画面にアクセスできない場合は、FTPでサーバーにアクセスし、pluginsフォルダの名前を「plugins_old」などに変更し、サイトに再度アクセスします。これでエラーが解消されたら、先ほど同様、エラーの原因となっているプラグインを探します。pluginsフォルダの名前を 「plugins」に戻して、サイトを再読み込みしながら、1つずつ有効にしていきましょう。
また、プラグイン、テーマ、WordPressコアは常に最新の状態に維持し、PHPは必ずサポートされているバージョンを使用してください。これについては、ご利用のホスティング会社がサポートしてくれるはずです。Kinstaでは、独自のAPMツールやその他のトラブルシューティング方法を利用して、エラーの原因となっているプラグイン、クエリ、スクリプトを特定するお手伝いをしています。またライセンスをお持ちであれば、独自のカスタムNew Relicキーを使用することも可能です。
効率的なクエリやプラグインの不適切なコードがエラーの原因になっていることが判明した場合は、解決にあたって、WordPress開発者の協力が必要になるかもしれません。
11. ログを確認する
エラーログも活用できます。Kinstaをご利用の場合は、MyKinstaの「ログビューア」で簡単にエラーを確認できます。特にエラーがサイトで使用するプラグインに起因している場合、効率的に問題を絞り込むことができます。
お使いのホスティングでログを確認できない場合は、wp-config.phpファイルに以下のコードを貼り付けて、有効にすることもできます。
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
WordPressのデバッグモードを有効にする方法についてはこちらをご覧ください。
ログは通常、/wp-contentディレクトリに格納されています。あるいは、Kinstaのように「logs」という専用フォルダがある場合も。
また、ApacheとNginxのログファイルを確認することもできます。
- Apache:/var/log/apache2/error.log
- NGINX:/var/log/nginx/error.log
Kinstaでは、分析機能を使って、502エラーの総数内訳をチェックし、いつ、どのくらいの頻度で発生しているかを確認することもできます。このエラーが継続的な問題であるかどうか、あるいは自然に解決したものであるかをトラブルシューティングするのに便利です。
12. PHPを再起動する
PHPを再起動してみるのも手です。Kinstaのお客様は、MyKinstaのツールメニューから簡単にPHPを再起動できます。Kinsta以外をご利用の場合は、カスタマーサポートに連絡し、PHPの再起動を依頼してください。
13. PHPのタイムアウト問題をチェックする
PHPのタイムアウトは、1つのワーカープロセスが、サーバーのPHP設定で設定されたmax_execution_time
、またはmax_input_time
を超えて長時間実行されると発生します。これは、大規模なWordPressインポートを行っているときによく見られます。この場合は、502サーバーエラーが表示されるのが通例で、PHPのタイムアウトが発生した場合は、制限値を上げる必要があるかもしません。
お使いのサーバーでどのような値が設定されているか、また値を上げることができるかどうかに関しては、ご利用のホスティング会社に確認してください。Kinstaでは、この値はデフォルトで300秒(5分)に設定されています。利用可能なPHPタイムアウトの最大値は、ご利用のプランによって異なります。
まとめ
この通り、「502 Bad Gateway」エラーのトラブルシューティング方法は多数あります。通常は、サーバー側の問題であることが多く、クライアント側のエラーであることは少ないです。また、質の低いコードや最適化されていないクエリを持つサードパーティのプラグインやテーマも原因になり得ます。
他にも502エラーのトラブルシューティング方法をご存知でしたら、以下のコメント欄でぜひお知らせください。
よくある質問
「502 Bad Gateway」エラーとは何ですか?
「502 Bad Gateway」エラーは、インターネット上のあるサーバーが別のサーバーから無効なレスポンスを受け取ったことを示します。ウェブサイトのサーバー通信に何らかの問題があることを警告する一般的なエラーです。
「502 Bad Gateway」エラーの原因は何ですか?
「502 Bad Gateway」エラーは通常、ネットワーク/サーバーに関連する問題によって発生しますが、クライアント側の問題によって発生する場合もあります。
「502 Bad Gateway」エラーの解決方法を教えてください。
以下のようなトラブルシューティングが有効です。
コメントを残す