nginxはなぜバックエンドから適切にchunked encoding応答を扱えないか?
Q: バックエンドのサーバはchunked encodingを使ってHTTP/1.0応答を送信しているようなのですが、nginxはそれを適切に処理しません。例えば、バックエンドからの純粋なJSONの代わりにnginxでフロントエンドのnode.jsアプリケーションを使っていますが、nginxは次のような数字の枠を返します。
47 {"error":"query error","message":"Parameter(s) missing: user,password"} 0
A: バックエンドがHTTP仕様に違反しています( RFC 2616, "3.6 Transfer Codings"を見てください)。"chunked" transfer-codingはHTTP/1.0で使うべきではありません。バックエンドアプリケーションを修正するか、nginxバージョン1.1.4以上にアップグレードします。そのような異常なバックエンドの挙動を扱う追加のコードが導入されました。