首頁  >  文章  >  後端開發  >  透過Nginx存取後端應用,ERR_CONTENT_LENGTH_MISMATCH 問題的解決

透過Nginx存取後端應用,ERR_CONTENT_LENGTH_MISMATCH 問題的解決

WBOY
WBOY原創
2016-08-08 09:23:305077瀏覽

遇到兩個問題

1. 選擇日期功能,不起作用了

2. 下載稍大一點的文件,只能下載一小頁調試發現有ERR_CONTENT_LENGTH_MISMATCH錯誤

系統:CentOS,Nginx,proxy到後端的tomcat

proxy_temp目錄中,然而對這個目錄沒有讀取和寫入權限

解決過程:

_RCON

解決過程:

:調試頁ENGTH_MISMATCH

在chrome下,請快取或強制刷新,response的status code為200

不強制刷新,response的status code為206

實際長度是一致的

都會出上面這個content length mismatch錯誤

如果不通過nginx,直接訪問tomcat,沒有這個錯誤,系統功能正常。

各種搜,先查到了一個帖子,問題描述很相似,提到是nginx gzip壓縮,由於nginx對檔案做了壓縮準備,按照壓縮後的長度來處理資料流,但透過proxy傳過來的資料實際上沒有被壓縮,沒有傳完,ngnix就關閉連線了。

從log來看,tomcat這邊確實出現了很多org.apache.catalina.connector.ClientAbortException,與前面出現ERRO_CONTENT_LENGTH_MISMATCH的請求相符。

開始學習nginx gzip的配置(準備另做一篇筆記)

,先解決了問題

醒了,還是沒頭緒,老老實實去查log

/var/log/nginx/error.logo

/var/log/nginx/error.log

2015/05/30 00:11:53 [crit] 8808#0: *60 open() "/var/cache/nginx/proxy_temp/2/01/0000000012" failed (13: Permission denied) while reading upstream, client:...

proxy_temp目錄,owner是root,rwx權限,其他使用者沒有權限。
nginx是以nginx用戶身份運行的,沒有權限,boom!

解決方法:

1.用croot

3.將proxy_temp目錄的group設定為nginx,並賦予rwx權限

4. 停用cache

遺留的問題:

1. proxy_temp目錄的owner一開始為什麼是root?應該是root嗎?

2. 選擇方法3後,發現對於同一個文件,會產生多份cache,不合理,為什麼會這樣?

3. 對於我們這個情況,需要cache嗎?會不會停用cache才是比較合理的選擇

>> to be continued 5-05-30

以上就介紹了透過Nginx存取後端應用,ERR_CONTENT_LENGTH_MISMATCH 問題的解決,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn