nginx が私のバックエンドからのチャンクエンコーディングレスポンスを適切に処理しない理由とは?

Q: バックエンドサーバーはチャンクエンコーディングを使用して HTTP/1.0 レスポンスを送信するようですが、nginx はそれを正しく処理しません。たとえば、node.js アプリケーションにフロントエンドとして nginx を使用しており、バックエンドから純粋な JSON の代わりに、nginx は次のような 10 進数でフレーミングされたものを返します

47
{"error":"query error","message":"Parameter(s) missing: user,password"}
0

 

A: バックエンドは HTTP 仕様に違反しています(RFC 2616, "3.6 転送符号化" を参照してください)。「チャンク化」転送符号化は、HTTP/1.0 で使用しないでください。バックエンドアプリケーションを修正するか、nginx バージョン 1.1.4 以降にアップグレードする必要があります。バージョン 1.1.4 以降では、そのような不規則なバックエンド動作を処理するための追加コードが導入されました。