nginx 配合jersey+netty的奇怪问题


角色

client

proxy nginx

server jersey+netty

 

问题表现

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

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

头尾都异常

 

问题原因

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

现状态

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都支持!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM