Nginx 502 Bad Gateway エラーの原因と解決策

Nginx 502 Bad Gateway エラーの原因と解決策

Nginx 502 Bad Gateway エラーに何度か遭遇しました。ここでメモしておこうと思います。


502 エラーが発生する状況は多数あります。それぞれの状況について個別に説明しましょう。

1. fastcgiバッファが小さすぎる

エラーが発生した場合は、まず /var/log/nginx ディレクトリ内の nginx ログ ファイルを探します。ログには次のエラーが見つかります。

2013/01/17 13:33:47 [エラー] 15421#0: *16 アップストリームからの応答ヘッダーの読み取り中にアップストリームが大きすぎるヘッダーを送信しました

情報を調べたところ、nginx バッファにバグがあり、当社の Web サイトのページがバッファを過剰に消費する可能性があることがわかりました。

ネットで解決策を探したところ、海外のウェブサイトでバッファを増やす方法を見つけ、Nginx 502 Bad Gateway の問題が完全に解決しました。方法は次のとおりです。

http {
  ...
  fastcgi_buffers 8 16k;
  fastcgi_buffer_size 32k;
  ...
}

サーバーやウェブサイトの状況に応じて、上記2つの設定項目を増やしてください。

2. プロキシバッファの設定が小さすぎる

nginx リバース プロキシを使用している場合、ヘッダーが大きすぎてデフォルトの 1k を超えると、上記のアップストリームから送信されたヘッダーが大きすぎるというエラーが発生します (簡単に言うと、nginx は外部リクエストをバックエンドに送信して処理しますが、バックエンドから返されるヘッダーが大きすぎて nginx が処理できず、502 が発生します)。

サーバー{
    聞く 80;
    サーバー名 *.lxy.me;
    位置 / {
################# 次の 3 行を追加します proxy_buffer_size 64k;
       プロキシバッファ 32 32k;
       proxy_busy_buffers_size 128k;
################ 次の 3 行を追加します proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
............
}

3. php-cgiプロセスのデフォルト数が少なすぎる

インストールおよび使用中に 502 エラーが発生した場合、通常は php-cgi プロセスのデフォルト数が 5 であることが原因です。502 は、phpcgi プロセスが不足していることが原因である可能性があります。/usr/local/php/etc/php-fpm.conf を変更し、max_children 値を適切に増やす必要があります。 max_requests 値が十分でない可能性もあります。これら 2 つの設定項目は大量のメモリを消費するので、サーバーの構成に応じて設定してください。そうしないと逆の効果が出る可能性があります。

4. PHP実行タイムアウト

PHP 実行タイムアウト。/usr/local/php/etc/php.ini を変更し、max_execution_time を 300 に変更します。

5. nginx 待機時間タイムアウト

一部の PHP プログラムの実行時間は、Nginx の待機時間を超えます。nginx.conf 構成ファイルで FastCGI のタイムアウト時間を適切に増やすことができます。

http {
 fastcgi_connect_timeout 300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout 300;
 .....
 }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • nginx サーバーでの 502 不正なゲートウェイ エラーの原因のトラブルシューティング
  • Nginx 502 Bad Gateway エラーの 4 つの一般的な原因と解決策
  • 深掘り: Nginx 502 Bad Gateway エラーを修正する方法
  • フロントエンド例外 502 不正なゲートウェイの原因と解決策

<<:  MySQL 8.0.22 winx64 のインストールと設定方法のグラフィックチュートリアル

>>:  JavaScript シングルスレッドと非同期の詳細

推薦する

CD コマンドを使わずに Linux でディレクトリ/フォルダに入る方法

ご存知のとおり、cd コマンドがないと、Linux でディレクトリを切り替えることはできません。それ...

mysql 8.0.16 winx64.zip インストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.16 winx64.zipのインストールと設定方法の具体的なコード...

Momentsで写真を整理するためのCSSコード

まず、Moments を開いて、写真の数が異なるいくつかのレイアウトを確認するか、以下の例を参照して...

ローカルサーバーを構築するためのwebpack-dev-serverの実装

目次序文webpack-deb サーバーwebpack-dev-server 起動エラー解決策1解決...

Tudou.comのホームページのデザイン方法

<br />私は数年間フロントエンドに取り組んできました。フロントエンドについて完全に理...

CentOS8 でローカル yum ソースを構成するための詳細なチュートリアル

centos8 ディストリビューションは、BaseOS および AppStream リポジトリを通じ...

MySQLで大きなテーブルを正常に削除する方法の詳細な説明

序文テーブルを削除するには、無意識に思い浮かぶコマンドは、DROP TABLE "テーブル...

JSの基本概念の詳細な紹介

目次1. JSの特徴1.1 マルチパラダイム1.2 説明1.3 シングルスレッド1.4 ノンブロッキ...

uniapp WeChatミニプログラムのグローバル共有を実装するためのサンプルコード

目次グローバル共有コンテンツファイルを作成するファイルをインポートしてグローバルに登録するページ共有...

Linuxオンラインソフトウェアgccをオンラインでインストールする方法

Linux オンラインインストール関連コマンド: yum install: すべてインストールyum...

HTMLはマーキーを使用してテキストを左右にスクロールします

コードをコピーコードは次のとおりです。 <本文> //マーキーの助けを借りて<MA...

CSS で子 div の高さを親コンテナの残りのスペースに合わせる方法

1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...

CentOS 7 構成 Tomcat9+MySQL ソリューション

Tomcatの設定まずTomcatをインストールするTomcatのインストールは、Tomcatのイン...

MySQL の frm ファイルからテーブル構造を復元する 3 つの方法 [推奨]

mysql が正常に実行されている場合、テーブル構造を表示することは難しくありません。しかし、場合...

Mailtoを使えばHTMLでメールを送るのは簡単

最近、顧客のフッターメールボックスにクリックして送信するメール機能を追加しました。Baidu で検索...