为什么 nginx 无法正确处理来自后端的分块编码响应?

问: 我的后端服务器似乎使用分块编码发送 HTTP/1.0 响应,但 nginx 无法正确处理。例如,我将 nginx 用作 node.js 应用的前端,但 nginx 返回的不是后端传来的纯 JSON,而是用十进制数字构成的框架,像

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

 

答: 您的后端违反了 HTTP 规范(请参阅 RFC 2616,“3.6 传输编码”)。“分块”传输编码不得与 HTTP/1.0 一起使用。您需要修复后端应用程序,或者升级到 nginx 1.1.4 或更新版本,该版本中引入了附加代码来处理这种异常的后端行为。