nginx 配合jersey+netty的奇怪问题

角色html

clientnginx

proxy nginxjson

server jersey+netty服务器

 

问题表现netty

client 直接请求server 正常,返回准确json数据 jsondat server

client->nginx->server 通过nginx,则请求长时间阻塞,直到超时返回异常数据 "2000\r\n{jsondata}\"��" htm

头尾都异常io

 

问题缘由cli

正常状况 nginx->server 拿到数据,判断传输停止,则nginx->client把数据返回给客户端coding

现状态

nginx-server 拿到数据,但没法判断出数据已停止,一直拿着数据,直到超时,加上异常信息,传给client

 

判断停止的条件,不外乎

 

Content-Length/Chunked

 

server和nginx配合有瑕疵,显然是nginx 对chunked处理有误。

 

chunked整体是http1.1里的内容,这是nginx的缺陷,而nginx理应没有这个问题

 

很大的多是版本太低

经确认

服务器
nginx version: nginx/1.0.15

 

确认是nginx版本太低致使

http://nginx.org/en/docs/faq/chunked_encoding_from_backend.html

https://serverfault.com/questions/159313/enabling-nginx-chunked-transfer-encoding/187573#187573

 

升级至1.12.0

 

另nginx部分版本默认设置仍是1.0,须要单独设置1.1

 

问题解决

 

nginx都支持http2.0了,公司的版本连1.1都支持!

相关文章
相关标签/搜索