WEBサイトを運営していると少なからずトラブルの発生はつきもの。
その中のひとつが、サイトが表示されない、サイト運営者にとっては管理画面にもアクセスできなくなる「502 Bad Gateway(502エラー)」。
トップ画面のこちら。

このエラーが発生すると、サイトの閲覧者も管理者もアクセスできない状態になり、大きな影響を受ける可能性があります。そこで今回は、502エラーの原因とその解決方法について実例を踏まえ考えてみます。
ひとまず、なにかしらの原因があってエラーが出ているわけですが、サイトにアクセスした際に「Bad」表示されているのを見るととんでもなく深刻な状況に見えてしまうのも確か。

502 Bad Gateway(502 エラー)ってなに?

502エラー表示のタイミング例(管理者側)
① | 「ログイン画面」からダッシュボードに遷移する際に「502」管理画面に入れない(ダッシュボード)が表示されない |
② | 投稿一覧など表示列が多いものが表示されずに「502」 |
③ | 新規投稿で公開を押すと「502」 |
何回か更新をかけると表示されたりする状態。
502エラーは、リクエストを処理するサーバー(ゲートウェイまたはプロキシサーバー)が、バックエンドサーバーから適切な応答を受け取れなかった場合に発生します。

一般的には以下が原因が考えられます。
502エラーの原因
① | サーバー側の問題 ・レンタルサーバーの障害やメンテナンス ・高負荷によるサーバーダウン ・サーバー設定の不備 |
② | DNSの変更などによる問題 ・ドメインのDNS設定の変更直後に発生するケース ・DNSキャッシュが古いため、新しいIPアドレスに解決できない |
③ | ファイアウォール設定の問題 ・サーバーのファイアウォール設定によりアクセスがブロックされている ・セキュリティプラグインが誤作動し、サーバーとの通信を遮断している |
④ | ウェブサイトのコードにエラー ・PHPスクリプトのエラー ・APIや外部サービスの接続エラー |
⑤ | キャッシュの問題 ・ブラウザやサーバーのキャッシュが古くなり、エラーが発生 ・キャッシュ系プラグインの誤作動 |
⑥ | プラグインの問題 ・過剰なプラグインのインストール ・互換性のないプラグインが干渉している |
⑦ | PHPバージョンの問題 ・PHPのバージョンが古すぎる、または最新すぎる ・PHPメモリ制限の設定が不十分 |
上記のケースの場合「502 Bad Gateway」が表示されるのですが「実際どれ?」ってなりますよね。
(これ!とはっきり言えない)
自身でサーバーを組まれるほどの方であればこのページに来られないでしょう。
たいていはレンタルサーバーで運用しているサイトで「502 Bad Gateway」が表示されて解決方法を探している方が大半ではないでしょうか。
①についてはおそらくサーバー管理者側でなにかしら作業完了を待つしか無し。②、③、④についても直前に自身で設定を変えたのであれば戻せばいいはず。⑤についてはブラウザやサイトのキャッシュをクリアで解決できます。
いろんな原因があることはわかるのですが「コレが解決法」、ってのがなかなか見つからない。
ただ、WordPress(ワードプレス)で構築されたサイト運営者でサイトの管理権限を持っている場合、
ほぼほぼ、プラグインのせい
と言っても過言ではありません。
WordPress(ワードプレス)で構築されたサイトの場合
WordPress(ワードプレス)で構築されたサイトは汎用性が高い分、運用上、管理すべき部分が多いのも事実。
WordPressのバージョン管理、プラグインの更新、データベースの適宜最適化など。
当サイト環境では基本的にはプラグインに関わることで「502 Bad Gateway」が表示されるケースが多くありました。

さまざまな要因が考えられますが、今回は「WordPress(ワードプレス)で構築されたサイト」かつ「運営者側」の立場の場合、サーバー、PHPの再起動で復旧するケースが大半です。
502エラーの解決方法
ユーザー側 | サイト運営側、サーバー側でのメンテナンス等の終了を待ちましょう |
サイト運営側 | サーバーの再起動、軽微なものであればPHP再起動でも復旧可能ですが根本的な解決にはなりません。 |
ユーザー側の対応
502エラーが表示された場合、ユーザー(閲覧者)としては以下の方法を試してみてください。
- ページをリロード(F5キーまたはCtrl + R / Cmd + R)
- 別のブラウザやデバイスで試す
- ブラウザキャッシュとCookieをクリア
- しばらく時間を置いて再アクセス
- 別のネットワーク(モバイルデータ等)を試してみましょう
サイト運営者の場合はWEB担当者がどこまでの権限を持っているかで対応できることも変わってくるため、状況によってはサイト運営側でまったく検討がつかない、お手上げ状態ってとなる場合がありますが解決の参考に。
サイト運営側で原因を確認
上から順に簡単。
可能であればサーバーでのエラーログを確認すると原因の特定が容易です。
対応方法 | 内容 |
プラグインのオフからオン | 更新したプラグインを停止してみる(サイトに入れない場合はFTPでプラグインファイルをリネームして強制停止) |
プラグインを更新前に戻す | FTPでディレクトリにバックアップファイルを直接上書きでダウングレード |
レストア | バックアップから問題発生以前の状態に戻す(サイト全体) |
PHPの再起動(再設定) | ご利用のサイトのサーバー環境や原因と思われる内容により対応方法は変えてください。 |
サーバーの再起動 | サイト運営権限では実行不可 |
WordPress(ワードプレス)で構築しているサイトの場合、プラグインによるサーバー負荷増加でPHPが処理しきれずエラー、という状態になるケースが多そうです。
まずはPHP、プラグインを疑ってみましょう。
サイトを最新状態へ更新する
「PHPの再起動(再設定)」で502エラーを一時的に解消していた当時のサイトですが、エラーになる頻度があがってきたため、以下手順で対応
- プラグインを全停止(※直接管理画面に入れない場合はFTP等で直接リネームで停止)
- ワードプレスバージョンを最新に更新
- プラグインを対応するバージョンへ全更新(ひとつずつ)
- テーマも最新に
- 不要になったプラグインは削除
- プラグインをひとつずつチェックしながら有効化
- 調整
を行ったところ、エラーが出る頻度が激減しました。
加えてスピードもアップ。運用テーマとプラグインの相性が問題だった模様。
ご利用の環境により最善の対応方法は異なります。
当サイトの場合、プラグイン必須だったため、上記手順を踏みましたが、必要がなければプラグインの削除のみでもいいかもしれません。
またプラグインがサイト運営上必須、という場合は、レンタルサーバーの変更も視野に入れてもいいでしょう。
ワードプレスバージョン、テーマの更新については細心の注意を払ってください。
サイト運営側で何も操作していない場合(原因が思い当たらない場合)
このようなケースの場合、いたずらに操作すると原因の特定ができず、より深刻な状況になる可能性もあります。
契約しているサイト管理者、サーバー管理者に連絡しましょう。
こんな場合は要注意(502が出やすい状況)
以下のような場合、サイトの重要なプログラムが機能していない(停止、破損)している場合があるかもしれません。
サイトの状態を確認しましょう。
- 適切なサイズであるはずの画像がアップロードできない(設定以下のサイズにも関わらずエラーになる)
- 記事の更新ができない
- ログイン画面の表示が遅い(重い)
- 管理画面の表示が遅い(重い)
502エラーを防ぐためのポイント
サイト運営者としてはアクセスに直結する「502 Bad Gateway」。
当サイトの場合AMPを導入しているため、AMPページ(Goolge)が読み込まれるためいきなりアクセスゼロということにはなりませんが、早々に直すべきエラーと言えるでしょう。
- プラグインの入れすぎに注意
- プラグインの更新は一つずつ丁寧に
- 画像を一括でアップロードするのは控えましょう
- 競合する性質のプラグインの導入は慎重に(キャッシュ系、画像)
- バックグラウンドで動作する常駐型のプラグインの導入は慎重に
- データベースに負荷の高いプラグインの導入は慎重に
- 上位スペックのサーバーへの移管検討
格安のサーバーを利用している場合は「サーバーに負荷をかけることは控える」
まとめ
「502 Bad Gateway(502エラー)」はサーバーとバックエンドの通信がうまくいかない際に発生するエラーですが、その原因はさまざま。
特にWordPressを使用している場合、プラグインやPHPのバージョンに問題があるケースが多いため、まずはプラグインの無効化やPHPの再起動を試してみましょう。
また、頻繁に502エラーが発生する場合は、サーバーの負荷やリソースの状況を確認し、必要であればサーバーのスペックを上げることも検討しましょう。
エラーの原因が不明な場合は、サーバー管理者やホスティング会社に相談するのが確実です。502エラーが発生しても焦らず、冷静に対応してサイトを復旧させましょう。
次ページ:事例:ある日の「502 Bad Gateway」
COMMENT
「「502 Bad Gateway」エラーの原因と解決方法は?WEB担当者ができること」についての追加情報、感想などをコメントまでお寄せください。