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以上にアップグレードします。そのような異常なバックエンドの挙動を扱う追加のコードが導入されました。

TOP
inserted by FC2 system