2

私の codeigniter アプリケーションは、502 Bad Gateway エラーに対して実行されています。この件については他にもスレッドがあることは知っていますが、私はサーバー ウィザードではありません。症状が異なり、サーバー構成もわずかに異なっていると思います。

これが私の状況です。

  • フォームを n 回投稿するまで (n は 2 回から n 回の間)、アプリケーションは正常に動作します。この n 回目は、以前の投稿とまったく同じです。1 つのフィールドを変更してから、送信ボタンを押すだけです。
  • フォームは検証クラスを使用し、これらのメッセージがセッションでフラッシュデータとしても設定されるようにエラー メッセージ セッターをカスタマイズしました (リダイレクト後にメッセージを利用できるようにしたい)。
  • 私のサーバーはNginxとApacheを使用しています(Plesk、Apacheサービスデーモンはhttpdと呼ばれます)。「service httpd stop」または「service nginx stop」を実行すると、すべての Web サイトがすぐに機能しなくなります。
  • エラーログにエラーはありません。

私の質問は次のとおりです。これはコーディングの問題でしょうか、それともサーバーの構成ミスである可能性が最も高いでしょうか (または最も可能性が高いですか?)。後者の場合は、もちろんすべてのアドバイスを歓迎しますが、plesk/apache/nginx 環境であることを忘れないでください。

皆さんが助けてくれることを願っています!

4

2 に答える 2

7

私は何が間違っているかを理解しました。まず第一に、サーバーの知識が豊富な同僚が、私の設定はおそらく nginx がすべてのリクエストを受け取り、静的ファイルを直接提供するようなものだったと説明してくれました。非静的リクエストの場合、作業を apache に渡し、仲介者として機能します。したがって、apache が nginx にデータを送信しようとしたとき (または nginx が apache に情報を送信しようとしたとき) に何か問題が発生した可能性があります。

これまで nginx を使用したことがなかったので、nginx のログ ファイルを確認することも考えていませんでした。そして、私が使用できるエラーがありました:

[エラー] 27453#0: *9223 アップストリームは、アップストリームからの応答ヘッダーの読み取り中に大きすぎるヘッダーを送信しました。クライアント:

この他のスタックオーバーフローソリューションの最初のビットを適用することになりました:

Add this to your nginx.conf file normally located at
/etc/nginx/nginx.conf:

proxy_buffer_size   128k; 
proxy_buffers   4 256k;
proxy_busy_buffers_size   256k;

ちなみに、ファイルの http セクションに追加する必要があります。それがソリューションに欠けていたものでした。

于 2013-01-30T21:44:50.963 に答える
2

失敗した直後に Apache サーバーのステータスを確認することをお勧めします ( service httpd status)。より良い判断のための詳細はありませんが、可能性のあるシナリオの 1 つは、Apache が N 番目のリクエストで失敗するため、Nginx がリクエストを Apache に転送できず、「502 Bad Gateway」を返すことです。

Apache の障害は、プログラムと設定ミスの両方の問題である可能性があります。つまり、N番目のリクエストでRAMを使いすぎて(リクエスト間に日付を保持していることを理解しています)、仮想化エンジンによって強制終了されます(専用のハードウェアサーバーではなくVPSを使用している場合)。ここまでは仮説ですが、私もそのような事例を経験したことがあります。

于 2013-01-30T13:26:57.207 に答える