为什么 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 及更高版本,其中引入了附加代码来处理此类不稳定的后端行为。