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

相關文章
相關標籤/搜索