2013-10-23 49 views
8

Drupalを実行するためにLEMPスタックを設定しています。私はNginxとPHP-FastCGIをインストールしました。Nginx 502 Bad Gateway。バッファを増やすことで解決。どうして?

Nginxは正常に動作しましたが、PHPを実行しようとすると「502 Bad Gateway」というエラーが表示されました。

急いでGoogleが明らかにした:nginx 502 bad gateway、そしてバッファサイズを増やすと問題が解決しました。

fastcgi_buffers 8 16k; 
fastcgi_buffer_size 32k; 

質問はなぜですか?

前のリンクから私の理解

、nginxのは、PHP-FastCGIのに要求を送っていたし、それが応答しなかったことと思われます。これらの要求がタイムアウトになったのはどうですか?

PHPが複雑なため応答する時間が足りませんでした(それはphpinfo();でした)。バッファーを増やしましたが、バッファーをもう一度増やす必要はないのでしょうか?

+0

エラーログを確認してください –

+0

特定のPHPコールでのみ、同じnginx 502の不正なゲートウェイを取得していました。バッファーとバッファーサイズを追加することも私の仕事でした。理由は分かりません。 – amurrell

+1

これは間違ったフォーラムではありますが、これは良い質問です。私も、これについて疑問に思っていました。なぜなら、すべてのソリューションがなぜバッファサイズを増やすのかということを、私は気にせずに悩ましています。どれくらいですか?あまりにも小さいのは何ですか?なぜこれはデフォルトの設定ではありませんか?なぜ? – jpeltoniemi

答えて

4

理解しにくいです。
upstream sent too big header while reading response header from upstream

fastcgi_buffersは、上流のFastCGIの応答のために使用されるバッファ・セグメントの数とメモリサイズを設定します:あなたはnginxのエラーログを確認する場合は

、おそらくあなたは、このメッセージが表示されます。

文書で提示

デフォルト値:
fastcgi_buffers 8 4k|8k;
デフォルトのバッファサイズは、オペレーティングシステムのPAGESIZEに等しいです。
getconf PAGESIZEは、現在のメモリページサイズを取得できます。

たとえば、Ubuntu 14.01では、デフォルトPAGESIZEは4KBです。 つまり、それぞれ4KBのセグメントが8つあります。合計は32KBです。 FastCGIの応答がこの数値を超えています。その理由は、応答コードを取得する理由です。502 - server received

これは良い説明ではありませんが、わかりやすくするために役立ちます。

+0

FastCGIレスポンスのサイズはどのように分かりますか? – Fahmi

+0

これはアプリケーションによって異なります。 fpmは要求を処理し、nginxが受け取るhtml出力をレンダリングします。この出力のサイズは、高速cgiバッファよりも大きいです。 – antonbormotov

関連する問題