要件:nginxリバースプロキシを使ってウェブサイトにアクセスする際、時折502エラーが報告されましたが、それは常にバックエンドのダウンやネットワークの変動が原因でした。最終的にnginxのエラーログを確認することで、他の理由が明らかになりました。
nginx 502エラーには実際には多くの原因があります。502のBad Gatewayサーバーにエラーがあり、プロキシやゲートウェイとして機能する場合、サーバーがリクエスト処理時に正しい上流応答を受け取れない可能性があります。
NGINXエラーログ:
*上流753983送信時に応答ヘッダーを読み込みすぎた。クライアント:xxx、サーバー:test-sso.rms-cloud.com、リクエスト:「GET /itsvse HTTP/2.0」、アップストリーム:「http://127.0.0.1:29090/itsvse」、ホスト:「xxx.com」
解決:
nginxは以下の構成を追加します:
構成説明:
proxy_buffer_size
Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location
プロキシサーバーから受信したレスポンスの最初の部分を読み取るためのバッファサイズを設定します。この部分は通常、小さなレスポンスヘッダーを含みます。バッファサイズが超過すると、レスポンスは無効とみなされます。デフォルトでは、バッファサイズは1ページのメモリに相当します。これはプラットフォームによって4Kまたは8Kです。ただし、小さくすることも可能です。
proxy_buffers
Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location
プロキシサーバーからの応答を読み取るための単一の接続でバッファの数とサイズを設定します。デフォルトでは、バッファサイズは1つのメモリページに相当します。これはプラットフォームによって4Kまたは8Kです。
proxy_busy_buffers_size
Syntax: proxy_busy_buffers_size size;
Default: proxy_busy_buffers_size 8k|16k;
Context: http, server, location
プロキシサーバーからのレスポンスバッファリングが有効になると、レスポンスが完全に読み込まれる前にクライアントにレスポンスを送信するのに忙しいバッファの総サイズが制限されます。その間、残りのバッファはレスポンスを読み込み、必要に応じてレスポンスの一部を一時ファイルにバッファリングするために使われます。デフォルトでは、サイズはproxy_buffer_size命令とproxy_bBuffers命令によって設定された2つのバッファのサイズによって制限されます。 |