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