502 Bad Gateway NGINX エラーを修正する方法? (7つの方法)

公開: 2023-04-20

Nginx は、そのパフォーマンス、スケーラビリティ、および柔軟性で非常に人気のある有名なオープン ソース Web サーバーです。 ただし、他の Web サーバーと同様に、Nginx はクライアントにコンテンツを配信する機能を妨げるエラーに直面する可能性があります。 そのようなエラーの 1 つに、502 Bad Gateway Nginx エラーがあります。

エラーに遭遇すると、特に技術的に熟練していない場合は、非常にイライラして混乱する可能性があります. 死の白い画面やデータベース接続の確立エラーなど、いくつかの同様の顕著なエラーが発生する場合があります。 しかし、502 bad gateway nginx エラーは非常によくあるエラーです。

このエラーが発生する理由は複数考えられるため、さまざまなトラブルシューティング方法が考えられます。 この投稿では、502 Bad Gateway Nginx の実際の意味、考えられる原因、および従うべき最善のトラブルシューティング方法について説明します。

始めましょう!


目次
502 Bad Gateway Nginx エラーとは何ですか?
502 Bad Gateway Nginx エラーの原因は何ですか?
502 Bad Gateway Nginx を修正するには?
まとめ
よくある質問

読む:ウェブサイトの 502 Bad Gateway エラーを修正する 15 の方法


502 Bad Gateway Nginx エラーとは何ですか?

502 Bad Gateway Nginx エラーは、ゲートウェイまたはプロキシ サーバーとして機能しているサーバーがアップストリーム サーバーから有効な応答を受信できないことを表す HTTP ステータス コードです。 Nginx の場合、サーバーがアップストリーム サーバーとの接続を確立できない場合、またはアップストリーム サーバーが無効な応答を返した場合に、502 Bad Gateway エラーが発生します。

このエラーは、リバース プロキシまたはロード バランサーの背後でホストされている Web サイトまたは Web アプリケーションにアクセスしようとしたときによく見られます。

さまざまなサイトで見つかる可能性のある 502 Bad gateway Nginx Error には複数のバリエーションがあります。 例えば:

  • HTTP エラー 502 - ゲートウェイが正しくありません
  • 502 プロキシ エラー
  • 502不正なゲートウェイ
  • 502 サービスの一時的な過負荷
  • HTTP 502
  • 502 不正なゲートウェイ NGINX
  • エラー 502

502 Bad Gateway Nginx エラーの原因は何ですか?

Nginx で 502 Bad Gateway エラーが発生する理由はいくつか考えられますが、以下にリストされている最も一般的なもののいくつかを次に示します。

サーバーの過負荷

バックエンド サーバーが受信する要求が多すぎると、過負荷になり、タイムアウト期間内に応答できなくなる可能性があります。 これにより、アップストリーム サーバーがクライアントの要求を満たすことができないため、502 エラーが発生します。 適切なサーバーのサイジング、リソースの割り当て、負荷分散、およびスケーリングの戦略により、サーバーの過負荷を防ぐことができます。

接続の問題

  • 接続の問題により、リバース プロキシ サーバーとバックエンド サーバー間のネットワーク接続に問題がある場合、Nginx で 502 Bad Gateway エラーが発生する可能性があります。
  • これは、ネットワークの輻輳、ネットワーク設定の構成ミス、またはハードウェア障害が原因で発生する可能性があります。
  • リバース プロキシ サーバーが要求をバックエンド サーバーに転送しようとしたが、接続を確立できない場合、クライアントに 502 エラーを返します。
  • このエラーは、リバース プロキシ サーバーがクライアントとバックエンド サーバーの間の仲介役として機能し、バックエンド サーバーに接続してクライアントの要求を満たすことができないために発生します。
  • ネットワーク設定のトラブルシューティング、ファイアウォール ルールの確認、およびネットワーク トラフィックの監視は、問題の解決に役立ちます。

DNS の問題

  • バックエンド サーバーの DNS 解決が失敗すると、DNS の問題により、Nginx で 502 Bad Gateway エラーが発生する可能性があります。
  • これは、DNS 構成が正しくない、DNS サーバーの障害、または DNS キャッシングの問題が原因で発生する可能性があります。
  • クライアントがリバース プロキシ サーバーに要求を送信するとき、リバース プロキシ サーバーはバックエンド サーバーのドメイン名を IP アドレスに解決する必要があります。
  • DNS 解決に失敗すると、リバース プロキシ サーバーは要求をバックエンド サーバーに転送できず、クライアントに 502 エラーが返されます。

読む: DNS とは?


ファイアウォールの制限

  • ファイアウォールの制限により、ファイアウォールがリバース プロキシ サーバーとバックエンド サーバー間の接続をブロックすると、Nginx で 502 Bad Gateway エラーが発生する可能性があります。
  • これは、ファイアウォールが特定の IP アドレスまたはポートとの間のトラフィックを制限するように構成されている場合に発生する可能性があります。
  • リバース プロキシ サーバーがバックエンド サーバーに接続しようとしても、ファイアウォールが接続をブロックすると、クライアントに 502 エラーが返されます。
  • これは、リバース プロキシ サーバーがクライアントとバックエンド サーバーの間の仲介者として機能し、バックエンド サーバーとの接続を確立してクライアントの要求を満たすことができないために発生します。
  • 502 エラーの原因となっているファイアウォール関連の問題を修正するには、ファイアウォール ルールを調整して、リバース プロキシとバックエンド サーバー間でトラフィックが流れるようにする必要がある場合があります。

ソフトウェアのバグ

  • リバース プロキシ サーバーまたはバックエンド サーバーのソフトウェア バグまたは構成ミスが原因で、502 Bad Gateway エラーが発生する場合があります。
  • このエラーは、サーバー モジュールまたはアプリケーションのコーディング エラーまたは構成ミスが原因で発生する可能性があります。
  • いずれかのサーバーのソフトウェアまたは構成にバグが含まれている場合、要求の処理またはタイムアウト期間内の応答に失敗し、クライアントに 502 エラーが返される可能性があります。
  • 502 エラーの原因となっているソフトウェア関連の問題を修正するには、リバース プロキシ サーバーとバックエンド サーバーの両方のログを調べて、エラーまたは警告メッセージを特定する必要がある場合があります。

PHP-FMP の応答に時間がかかりすぎています

  • PHP-FPM (FastCGI Process Manager) は、タイムアウト期間内に応答しない場合、または重大なエラーが発生した場合に、Nginx で 502 Bad Gateway エラーを引き起こす可能性があります。
  • このエラーは、リソース不足、構成ミス、または PHP コードのバグが原因で発生する可能性があります。
  • PHP-FPM は、Nginx で PHP アプリケーションを実行する一般的な方法です。Nginx は PHP-FPM にリクエストを送信し、PHP コードを処理して結果を Nginx に返します。Nginx はレスポンスをクライアントに返します。
  • PHP-FPM 関連の問題を修正するには、PHP-FPM 構成を調整してプロセスまたはスレッドの数を増やすか、タイムアウト設定を調整する必要がある場合があります。
  • バグやパフォーマンスの問題を特定して修正するために、PHP コードを調べる必要がある場合もあります。
  • さらに、サーバー ログとシステム リソースを監視すると、PHP-FPM のより大きな問題を示す可能性のあるパターンや傾向を特定するのに役立ちます。

読む: HTTP 504 ゲートウェイ タイムアウト エラーを修正するには?


502 Bad Gateway Nginx を修正するには?

502 Bad Gateway Nginx エラーを修正するために従うことができるいくつかの最良の解決策を次に示します。

  • Nginxのステータスを確認する
  • バックエンド サーバーのステータスを確認する
  • DNS 構成を確認する
  • ファイアウォールの構成を確認する
  • バッファ サイズを増やす
  • Nginxサーバーを再起動します
  • PHP-FPM のステータスを確認する

Nginxのステータスを確認する

最初に行う必要があるのは、Nginx が実行されていて、リクエストに応答しているかどうかを確認することです。 これを行うには、以下に示す次のコマンドを実行します。

Nginx が実行されている場合、次のような出力メッセージが表示されます。

nginx.service - The nginx HTTP Server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-10-11 10:25:41 UTC; 1 days ago
Docs: https://httpd.nginx.org/docs/2.4/

Nginx が実行されていない場合、次のような出力メッセージが表示されます。

nginx.service - The nginx HTTP Server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2022-10-11 10:25:41 UTC; 25s ago
Docs: https://httpd.nginx.org/docs/2.4/

Nginx が実行されていない場合は、次のコマンドを使用して再起動する必要があります。

systemctl start nginx

バックエンド サーバーのステータスを確認する

  • Nginx をホストしているリバース プロキシ サーバーにログインします。
  • ターミナル ウィンドウを開き、次のコマンドを実行します。

curl -I http://backend-server-ip-address/

• 「backend-server-ip-address」をバックエンド サーバーの IP アドレスに置き換えます。

• コマンドの出力で HTTP ステータス コードを確認します。 バックエンド サーバーが正常に動作している場合は、ステータス コード 200 OK が表示されます。

• 200 以外のステータス コードを受け取った場合は、バックエンド サーバーに問題がある可能性があることを示しています。 バックエンド サーバーのログを調べて、エラーまたは警告メッセージを特定することで、問題をさらに調査できます。

DNS 構成を確認する

DNS 解決に失敗すると、リバース プロキシ サーバーは要求をバックエンド サーバーに転送できず、クライアントに 502 Bad Gateway エラーが返されます。 したがって、バックエンド サーバーの DNS 構成が正しいことを確認することが重要です。

DNS 構成を確認するには、次の手順を実行できます。

  • Nginx をホストしているリバース プロキシ サーバーにログインします。
  • ターミナル ウィンドウを開き、次のコマンドを実行します。

nslookup backend-server-domain-name

「backend-server-domain-name」をバックエンド サーバーのドメイン名に置き換えます。

• コマンドの出力を調べて、バックエンド サーバーの正しい IP アドレスが返されていることを確認します。

  • コマンドの出力が DNS 解決に失敗したことを示している場合は、DNS 構成に問題がある可能性があります。 バックエンド サーバーのドメイン名の DNS 設定を確認するか、DNS プロバイダーに問い合わせて、問題をさらに調査することができます。

ファイアウォールの構成を確認する

ファイアウォール ログで異常なブロックを確認することをお勧めします。 ファイアウォールがサイトを阻止またはブロックすることもあります。 この問題を解決するには、ファイアウォールを一時的に無効にして、問題が解決したかどうかを確認する必要があります。

バッファ サイズを増やす

バッファ サイズを大きくすると、Nginx はサーバーの応答からより多くのデータを保存できるようになり、応答が完全でエラーがないことが保証されます。 バッファー サイズを増やすには、Nginx 構成ファイルを編集し、次のディレクティブを追加する必要があります。

  • proxy_buffer_size : 各バッファのサイズを設定します。 デフォルト値は通常 4K です。 サーバーの要件に応じて、より高い値に増やすことができます。 たとえば、バッファー サイズを 16K に設定するには、構成ファイルに次の行を追加します。

proxy_buffer_size 16k;

  • proxy_buffers : 割り当てるバッファの数を設定します。 通常、デフォルト値は 8 です。サーバーの要件に応じて、より高い値に増やすことができます。 たとえば、バッファ数を 32 に設定し、バッファ サイズを 16K に設定するには、次の行を構成ファイルに追加します。

proxy_buffers 32 16k;


注:バッファー サイズとバッファー数を増やすと、サーバーのメモリ使用量が増加することに注意してください。 そのため、さまざまなバッファー サイズとバッファー数を試して、サーバーとアプリケーションに最適な設定を見つける必要があります。


  • Nginx 構成ファイルを変更したら、ファイルを保存して Nginx を再起動し、変更を有効にします。 これを行うには、次のコマンドを実行します。

sudo service nginx restart

Nginxサーバーを再起動します

場合によっては、Nginx サーバーを再起動するだけで、502 Bad Gateway Nginx エラーが解決することがあります。 これをする、

ターミナルまたはシェルでコマンドを実行する必要があります。 正確なコマンドは、使用しているオペレーティング システムとディストリビューションによって異なりますが、いくつかの例を次に示します。

  • Ubuntu と Debian:

sudo service nginx restart

  • CentOS、Fedora、および RHEL:

sudo systemctl restart nginx

  • macOS :

sudo nginx -s reload

これらのコマンドは、Nginx サーバーを適切に再起動します。つまり、アクティブな接続が終了するまで待機してから、シャットダウンして再起動します。

PHP-FPM のステータスを確認する

502 Bad Gateway Nginx エラーは、PHP-FPM が実行されていないことが原因で発生する場合もあります。 したがって、PHP-FPM のステータスをチェックして、適切に実行されていることを確認する必要があります。

実行状況を確認するには、次のコマンドを使用できます。

sudo service php-fpm status

PHP-FPM が実行されている場合は、アクティブであることを示すメッセージが表示されます。

ただし、PHP-FPM が実行されていない場合は、次のコマンドを使用して再起動を試みることができます。

sudo service php-fpm restart

このコマンドは、PHP-FPM サービスを再起動します。これにより、502 Bad Gateway Nginx エラーを引き起こしている可能性がある問題を解決できます。


まとめ

502 Bad Gateway Nginx エラーは、Nginx ユーザーが遭遇する可能性のある一般的なエラーです。 通常、接続の問題、サーバーの過負荷、DNS の問題、ファイアウォールの制限、またはソフトウェアのバグが原因です。

ただし、この記事で概説されている手順に従って、502 Bad Gateway nginx エラーをトラブルシューティングして解決できます。

上記の方法のいずれもうまくいかない場合は、残念ながら、Nginx フォーラムまたは経験豊富で資格のある Nginx コンサルタントに支援を求めることを検討してください。

この投稿で見逃した可能性のある 502 Bad Gateway Nginx エラーに関するヒントや提案がある場合、または同じ経験を共有したい場合は、以下のコメント セクションでお知らせください。 ご意見をお待ちしております。


読む: WordPress で HTTP 500 内部サーバー エラーを修正する方法は?


よくある質問

502 不正なゲートウェイ nginx を修正するにはどうすればよいですか?

以下の方法に従って、502 Bad Gateway nginx エラーを修正できます。
1.Nginxのステータスを確認する
2.バックエンド サーバーのステータスを確認する
3. DNS 構成を確認する
4.ファイアウォールの構成を確認する
5.バッファサイズを増やす
6.Nginxサーバーを再起動します
7. PHP-FPM 統計を確認する

nginx のステータスを確認するにはどうすればよいですか?

nginx のステータスを確認するには、以下のコマンドを実行します。
systemctl ステータス nginx
出力には、nginx が実行されているかどうかが表示されます。

502 Bad Gateway エラーとは何ですか?

502 Bad Gateway Nginx エラーは、ゲートウェイまたはプロキシ サーバーとして機能しているサーバーがアップストリーム サーバーから有効な応答を受信できないことを表す HTTP ステータス コードです。