突然サイトが真っ白!?画面中央には「502 Bad Gateway」の文字が…。
そんな予期せぬダウンは運営者にとって悪夢です。しかもこのメッセージだけでは原因が多岐にわたるためどこを直せばいいのか分からない。と悩む方も多いと思います。
本記事ではWordPressで「502 Bad Gateway」とエラーが表示されたときの対処法と再発を防ぐための運用ポイントをご紹介します。
目次
- 502 Bad Gatewayとは?
- 発生元を特定するためにチェックすること
- 502 Bad Gateway|事例別の対処法
- HTMLが502で止まっているケース
- 画像やCSSだけが502になるケース
- プラグイン更新直後にサイト全体が502になるケース
- WordPressのアップデート直後に502が発生するケース
- Cloudflare経由では502だが、オリジンサーバーへ直接アクセスすると正常なケース
- アクセス集中時に断続的に502が発生するケース
- WordPressをアップデートした直後に502が発生するケース
- .htaccessの書き換えミスで502になるケース
- レンタルサーバー側の一時的な障害で502になるケース
- データベースが停止していてPHPが返事できず502になるケース
- wp-config.phpを手動で編集した直後に502になるケース
- サーバー移転直後に502になるケース
- 再発を防ぐための設定・運用ポイント
- まとめ
- WordPressに特化したホームページ制作
目次
502 Bad Gatewayとは?
ブラウザに表示されるステータスコードの基礎
1xx ~ | 処理を続行している途中であることを示す応答です。最終的な結果ではなく“途中経過”として送られます。 |
2xx ~ | リクエストが正常に処理されたことを表します。 |
3xx ~ | URLが変わっており、ブラウザに自動で新しいURLを教えるときに出る。 |
4xx ~ | 操作に何らかの問題があり、サーバーが処理できなかった。 |
5xx ~ | サーバー内部で処理を完了できずに失敗した。 |
上記の表を見ると、4xxエラーと5xxエラーが似ていますね。これは、閲覧者からのアクセスに問題があるか、サーバー側のトラブルかで変わってきます。
4xx = 「閲覧者からのアクセス内容に問題がある」
5xx = 「サーバー側のトラブルでページが出せない」
そのため、今回の「502 Bad Gateway」は“5xx”に属するため、原因はブラウザや閲覧者の端末ではなく、サーバー側の処理系統にあると理解できます。
502エラーが起きる典型的なパターン
「ゲートウェイ」あるいは「リバースプロキシ」として機能するサーバーが、裏側で動く上流サーバーから有効な応答を得られなかったときに発生するのが502エラーです。
典型例は、上流サーバーが高負荷でプロセスが落ちている、設定ミスでポート番号が合っていない、処理がタイムアウトした、あるいはネットワークやファイアウォールが通信を遮断している場合です。要するに「閲覧者 → ゲートウェイまでは到達したが、その先でボールが返ってこなかった」状態であり、復旧には“どの区間で応答が途切れたのか”を切り分けて特定する必要があります。
発生元を特定するためにチェックすること
「502 Bad Gateway」が出た瞬間に復旧作業へ移る前に、まずはどこで問題が起きているかを絞り込みましょう。やみくもにサーバーを再起動するよりも、数分の確認で原因を特定できるケースもあります。まずは以下の3つの項目を確認してみましょう。
自分だけの環境か全ユーザーか
1. 別ブラウザで開く
ChromeやFirefox、Edgeなど、ブラウザによって差がないかチェック
2. 端末を変える
スマートフォンやタブレットなどモバイル回線のアクセスを試す。
3. ルーターやプロキシを経由しない回線で確認
社内ネットワーク固有の通信制限が疑われる場合に試す。
以上3つの項目ですべてエラーが出る場合、閲覧者全員が影響を受けている可能性が高いです。そのため、サーバー側の原因を優先して調査しましょう。
サーバー応答時間とステータスを調べる方法
問題が自分だけではないと分かったら「サーバーは応答しているか」「応答に何秒かかっているか」を調べましょう。
curl コマンド
curlコマンドを使用し、「curl -I https://example.com」と入力すると、httpステータスと応答ヘッダーが即時に表示されます。ここで502が表示されれば、サーバー側の障害であることが確定します。
DevTools
Googleであれば「F12キー」をクリックし、Networkタブを開き「F5キー」でページを再読込すると、各リソースのステータスと読み込み時間が一覧表示されます。HTMLが502で止まっているのか、画像やCSSだけが502になっているのかで対処法が変わります。
502 Bad Gateway|事例別の対処法
HTMLが502で止まっているケース
ブラウザが最初に読み込みに行くHTML本体が502で返ってくる場合、PHP-FPMやApacheなど、WordPress本体を動かしている工程が全く応答していません。この場合、サーバー層の健全性を確認します。
1. WebサーバーとPHPを再起動
systemctl restart nginx php-fpm またはApacheでプロセスを再起動し、プロセス数やメモリ使用量をリセットします。
2. error_logの直近数行を確認する
tail -n 50 /var/log/nginx/error.log と php-fpm.logに“connect() failed” や “upstream prematurely closed connection” が並んでいれば、PHP が落ちているかタイムアウト超過のサインです。
3. プラグイン・テーマの一括無効化
SFTP で wp-content/plugins を plugins_backup にリネームして WordPress を再読み込みします。表示が戻ればプラグイン競合が原因なので、フォルダを戻して個別に有効化していきます。
4. リソース不足の確認
top や htop で CPU・メモリが 100 % 近く張り付いていないか、df -h でディスク容量が枯渇していないかをチェックしましょう。
画像やCSSだけが502になるケース
トップページのHTMLは正常に動いているが、静的ファイル「wp-content/uploads」や「wp-includes」内の画像・CSSが502になる場合は、配信経路やファイルシステムに限定した問題です。
1. CDN/WAFの切り分け
Cloudflare などを使っている場合、そのサブドメインだけオレンジ雲(プロキシ)を外すか、開発モードにして直通にすると改善することがあります。CDN 側の 502 は「オリジンに到達できない」意 味なので、オリジンサーバーのファイアウォールや rate-limit 設定も確認します。
2. Nginxのlocation設定漏れ
location ~* \.(css|js|png|jpg|gif|webp)$ などで try_files を書き換えた直後に起こりがちです。パーミッションやパスが正しいか、fastcgi_pass を誤って静的ファイルにも適用していないかをチェックします。
3. ファイルパーミッションの不整合
アップロード直後に 502 が出る場合、uploads ディレクトリやファイルの権限が 600/700 になっていないか確認します。推奨はディレクトリ 755、ファイル 644です。
4. PHPで動的に生成されるアセット
Autoptimize・Elementor などが作る圧縮 CSS/JS は実体が PHP スクリプトの場合があり、その PHP がタイムアウトすると当該アセットだけ 502 になります。一時的に最適化プラグインをオフにして動作を確かめましょう。
プラグイン更新直後にサイト全体が502になるケース
WordPress管理画面でプラグインをアップデートした直後、フロントも管理画面も 502 で真っ白になることがあります。多くは更新に伴ってPHPの互換性エラーやメモリ不足が発生し、上流の PHP-FPM がクラッシュしたことが原因です。
1. プラグインを無効化
SFTPでwp-content/plugins を一時的に plugins_off へリネームし、すべてのプラグインを一括無効化します。
2. 影響しているプラグインを特定
ページが復旧したらフォルダ名を戻し、問題のプラグインを一つずつ有効化して再現テストを行います。
3. プラグインを特定したら
影響しているプラグインが特定できたらダウングレードするか、開発元にパッチの有無を問い合わせましょう。PHP8以降では旧式コードがエラーを起こしやすいため、アップデート前に動作確認を行うか、バックアップを行っておくと再発を防げます。
WordPressのアップデート直後に502が発生するケース
WordPress本体のバージョンアップ完了後に全ページが502で真っ白になることがあります。主な原因は以下の2つがあります。
1. アップデート途中で処理が途切れ、必要なコアファイルが欠落
WordPress の自動アップデートは「ファイル展開 → データベース更新 → .maintenance 削除」という流れで進みますが、通信切断や残容量不足で処理が途中停止すると、テーマやプラグインを読み込む前提のコアファイルが抜け落ちます。結果、PHP-FPM がエラーを吐き、Nginx などのゲートウェイが 502 を返します。
対処法は、まず FTP/SSH で .maintenance を削除してページを再読み込みし、復旧しなければ WP-CLI の wp core download –force –skip-content か、公式 ZIP を展開して wp-content を残したままコアを上書きします。操作前に必ずバックアップを確保し、上書き後に wp-admin/upgrade.php を開いてデータベースを再更新してください。
2. 新バージョンが要求するPHPバージョンや拡張モジュールが不足
WordPress 6.5 以降は PHP 8.1 以上が推奨され、古い PHP では未定義関数エラーが発生します。また intl や zip などの拡張モジュールが有効でないと、コアが読み込まれる前に PHP がクラッシュし 502 につながります。
対処法は、ホスティングのコントロールパネルや php -v で現在のバージョンを確認し、要件に満たない場合は PHP を引き上げます。バージョンを上げた後でも 502 が解消しない場合は php-fpm.log を参照し、足りないモジュールを yum/apt で追加インストールしてください。環境変更が難しい共有サーバーでは、ひとつ前の WordPress バージョンへロールバックし、ステージング環境で動作確認してから再アップグレードすると安全です。
Cloudflare経由では502だが、オリジンサーバーへ直接アクセスすると正常なケース
ブラウザには「502 Bad Gateway|Cloudflare」と表示されるのに、サーバーの IP を hosts ファイルで直指定するとページが表示できる場合、障害はCloudflare、オリジン間の通信に限定されます。
DNS でCloudflareのプロキシ(オレンジ雲)が有効になっているレコードを一時的にグレー雲へ切り替え、CDN をバイパスして様子を見るのが最速です。
オリジン側のファイアウォールが Cloudflare の IP レンジを遮断していないか、オリジン証明書の期限が切れていないか、SSL/TLS モードが「フル(ストリクト)」になっているかも合わせて確認します。
Cloudflare 側でネットワーク障害が起きている場合はステータスページに掲載されるため、復旧見込みをチェックしてプロキシを再度有効化してください。
アクセス集中時に断続的に502が発生するケース
セール告知や SNS での拡散後など、同時アクセスが急増したタイミングで断続的に 502 が出る場合は、PHP-FPM の子プロセスが枯渇してタイムアウトしている可能性が高いです。
php-fpm の設定ファイル(www.conf など)で pm.max_children を現在の同時接続数より余裕を持たせて増やし、必要メモリを見積もったうえでサービスを再起動してください。あわせて Nginx の proxy_read_timeout と fastcgi_read_timeout をおよそ 60 秒に延長し、バックエンド処理が完了する前にタイムアウトしないよう調整すると安定します。
さらに根本的な解決策としては、Redis や Varnish などのフロントキャッシュを導入して PHP の実行回数を減らすか、オートスケール対応のホスティングへ移行してピークトラフィックに応じてインスタンスを自動拡張できる構成にするのが効果的です。
WordPressをアップデートした直後に502が発生するケース
WordPress本体のバージョンアップ後に全ページが502で真っ白になることがあります。この場合は2つのパターンが考えられます。
1. アップデート途中で処理が途切れ、必要なコアファイルが欠落
WordPress の自動アップデートは「ファイル展開 → データベース更新 → .maintenance 削除」という流れで進みますが、通信切断や残容量不足で処理が途中停止すると、テーマやプラグインを読み込む前提のコアファイルが抜け落ちます。結果として PHP-FPM が致命的エラーを吐き、Nginx などのゲートウェイが 502 を返します。
対処法は、まず FTP/SSH で .maintenance を削除してページを再読み込みし、復旧しなければ WP-CLI の wp core download –force –skip-content か、公式 ZIP を展開して wp-content を残したままコアを上書きします。操作前に必ずバックアップを確保し、上書き後に wp-admin/upgrade.php を開いてデータベースを再更新してください。
2. 新バージョンが要求するPHPバージョンや拡張モジュールが不足
WordPress 6.5 以降は PHP 8.1 以上が推奨され、古い PHP では未定義関数エラーが発生します。また intl や zip などの拡張モジュールが有効でないと、コアが読み込まれる前に PHP がクラッシュし 502 につながります。
対処法として、ホスティングのコントロールパネルや php -v で現在のバージョンを確認し、要件に満たない場合は PHP を引き上げます。バージョンを上げた後でも 502 が解消しない場合は php-fpm.log を参照し、足りないモジュールを yum/apt で追加インストールしてください。環境変更が難しい共有サーバーでは、ひとつ前の WordPress バージョンへロールバックし、ステージング環境で動作確認してから再アップグレードすると安全です。
.htaccessの書き換えミスで502になるケース
WordPress を Apache で運用している場合、パーマリンク設定を変更したり常時 SSL化のリダイレクトを追加した直後に 502 が出ることがあります。原因は .htaccess に書き加えた 1 行のタイプミスや重複ルール。Apache が構文エラーで起動できず、上位の Nginxが応答不能と判断して502を返すパターンです。
1. Apacheを再起動
SSH/FTP でサイトルートの .htaccess を htaccess_bak などにリネームして Apache を再起動します。
2. 一行ずつ動作確認
502 が消えれば記述ミスが確定なので、公式の WordPress コア部分だけをコピーし、カスタムルールは一行ずつ戻して動作確認します。
3. 解決しない場合
502 が続く場合は原因が別層にあるため .htaccess を元に戻し、ログ調査へ進みます。
レンタルサーバー側の一時的な障害で502になるケース
共用レンタルサーバーでは、ハードウェア交換やネットワーク障害、上位ネットワークの DDoS 対策などで PHP‐FPM への接続が瞬間的に途切れ、全サイトが 502 を返すことがあります。自サイトのみ対処しても意味がないため、自分の権限外で発生しているトラブルかどうかを見極めましょう。
1. 情報収集
サービス提供会社のステータスページや X(旧 Twitter)の公式サポートアカウントで障害が起きていないかを確認しましょう。
2. 同サーバーのサイトを確認
同じサーバーに置いた別ドメインや管理画面にアクセスしてみて、そちらも 502 ならサーバー全体の障害と判断できます。
3. 障害告知がない場合
障害告知が出ていない場合はサポートへチケットを開き、502 Bad Gateway と表示された時刻と URL を伝えて復旧を依頼。運営が対応するまで待機し、完了後にキャッシュクリアと動作確認を行いましょう。
データベースが停止していてPHPが返事できず502になるケース
WordPress はページを生成するときに必ず MySQL/MariaDB に接続します。ところがDB サーバーが落ちていたり、再起動中でソケットが見つからない状態になると PHP‐FPM はクエリを投げられず沈黙し、Nginx が「上流から応答なし」と判断して 502 を返します。
SSH で systemctl status mariadb(または mysqld)を確認し、サービスが停止していれば systemctl start mariadb で再起動します。クラウド型のマネージド DB を使っている場合は、コンソールのステータスページで稼働状況を確認し、保守通知や負荷アラートが出ていないかも合わせて確認してください。
wp-config.phpを手動で編集した直後に502になるケース
デバッグ設定やキャッシュキーを追加するために wp-config.php をエディタで開き、うっかりセミコロンやクォーテーションの打ち忘れをすると PHP の解析エラーが発生します。エラーが標準出力に出る前に PHP‐FPM がクラッシュし、ゲートウェイが 502 を返すパターンです。
FTP/SFTP で wp-config.php を開き、編集前のバックアップと比較して構文ミス(; や ‘ の欠落、不要な空白)がないかを確認し、修正後にファイルを上書きするだけで復旧します。編集前のバックアップがない場合は、公式サンプルをベースに DB 接続情報を移植して再生成すると確実です。
サーバー移転直後に502になるケース
VPS や専用サーバーを移行したあと、Nginxのupstream設定が旧サーバーのポート番号
(例:127.0.0.1:9000)を指したままになっていると、新しい環境の PHP‐FPM
(例:127.0.0.1:9002)に届かず 502 になります。
Nginx の設定ファイルを開き、fastcgi_pass または proxy_pass が PHP-FPM 側の listen アドレス(ソケット名や IP:ポート)と一致しているか確認してください。値がズレていれば修正し、設定を保存後に Nginx を再読み込みすれば「502 Bad Gateway」は解消します。
再発を防ぐための設定・運用ポイント
オートスケール・キャッシュ導入でピークトラフィックに備える
突然のアクセス急増で PHP-FPM の同時実行数が上限に達すると、サーバーは応答を返せず 502 を引き起こします。
クラウドホスティングを利用しているなら、CPU・メモリ使用率や接続数をトリガーに自動でインスタンスを増減させるオートスケール機能を有効化し、ピーク時でも処理能力を確保してください。同時に、Nginx のリバースプロキシキャッシュや Redis・Object Cache Pro などのキーキャッシュを導入し、動的ページの再生成頻度を減らすことで PHP への負荷を大幅に軽減できます。
キャッシュ対象と保持時間を適切に設計すれば、トラフィックが瞬間的に数倍に跳ね上がっても 502 はほぼ発生しません。
プラグイン更新前のステージング環境を徹底
本番環境で直接プラグインを更新すると、互換性のないコードが読み込まれた瞬間に PHP がクラッシュして 502 に直結します。レンタルサーバーのクローン機能や WP-CLI の wp db export/wp db import を使ってステージング環境を用意し、そこでアップデートと動作確認を済ませてから本番へデプロイするフローを標準化しましょう。
CI/CD を組めるなら、Pull Request の段階で PHPStan・WP-Tests を走らせて致命的エラーの混入を未然に防ぐ仕組みを整えると、更新作業のたびに「502 が出ないか」という不安から解放されます。
定期バックアップと障害復旧手順のドキュメント化
サーバー障害や操作ミスはゼロにできませんが、「戻せる」体制があれば 502 でサイトが止まっても被害を最小限に抑えられます。ファイルとデータベースを少なくとも 1 日 1 回、自動でバックアップし、別リージョンか外部ストレージへ転送する設計が理想です。
さらに、復旧フローをドキュメント化しておくことが重要です。SSH でのログ確認コマンド、バックアップからのリストア手順、DNS 切り替えのタイミングなどを手順書として残し、定期的にリハーサルを行えば、実際に 502 が発生した場面でも慌てず 15 分程度でサービスを復旧できます。
まとめ
「502 Bad Gateway」が表示されてしまった際は、慌てずにブラウザ・端末・ネットワークを変えて、自分だけの問題か、全体的な問題かを把握しましょう。Xやホームページからの情報収集を行うことで、対応しなければならないことが明確になり、結果迅速に対応することができます。ユーザーの信頼を失わないためにも日頃から適切な運用を心がけましょう。
WordPressに特化したホームページ制作
株式会社サイバーインテリジェンスは、WordPressのカスタマイズにおいて全国トップクラスの技術力を備えております。「うまく運用できる自身がない…」という方も、弊社のカスタマイズで視覚的にホームページの情報更新を行っていただけます!ホームページの制作・リニューアルをお考えの方、まずはお気軽にご相談ください!