問題說明
- 環境說明: centos 6.5 nginx 1.13.7 tomcat 8.5+ jdk 1.8
- 問題描述 本地訪問測試機介面發生異常 curl訪問結果:
tomcat日誌:
- 解決思路 開始的時候感覺是tomcat配置的問題,因為錯誤資訊中多數是nio的錯,感覺是自己修改了nio的連線方式,然後修改連線超時時間和連線池大小,可結果依舊報錯,巧合是另外的一個專案也有問題,是session獲取不到,另外的同事把tomcat降級了,修改為tomcat7,感覺有戲,我把自己的專案也放進去試了下,結果很理想,哈哈哈... 可是我降級之後,訪問了下依舊報錯,我日了,然後仔細回顧了下問題,發現報錯的原因是因為客戶端連線斷開了導致的,但是我本地不可能出現這個問題,感覺會不會是nginx代理連線斷開呢,感覺很有可能啊,所有出現圖二,越過nginx訪問tomcat,我靠,結果果然可以,接著看tomcat中的日誌,發現報文體接收不全啊,遂開始看nginx的配置,什麼超時時間啊都配置了下,結果還是不行,然後開始各種百度,google,發現出現這個問題的原因是nginx裡對於小的反向代理請求是使用記憶體作中轉,對於稍微大一點的,是直接通過磁碟中轉的,然後檢視nginx目錄下proxy_temp資料夾許可權問題,許可權果然有問題,
chown nobody:nobody proxy_temp
複製程式碼
重啟nginx,再訪問,結果很完美。