天天看點

nginx反向代理tomcat通路時浏覽器加載失敗,出現 ERR_CONTENT_LENGTH_MISMATCH 問題

問題說明:

測試機上部署了一套業務環境,nginx反向代理tomcat,在通路時長時間處于加載中,十分緩慢!

通過浏覽器調試(F12鍵->Console),發現有錯誤ERR_CONTENT_LENGTH_MISMATCH 出現:

nginx反向代理tomcat通路時浏覽器加載失敗,出現 ERR_CONTENT_LENGTH_MISMATCH 問題

檢視nginx日志(當出現故障時,要記得第一時間檢視相關日志)

.......open() "/Data/app/nginx/proxy_temp/3/00/0000000003" failed (13: Permission denied) while reading upstream, client:...... server: localhost, request: "GET

原因:

nginx在做代理時,其工作程序對大檔案做了緩存,這個緩存在 %nginx%/proxy_temp 目錄下,主程序在讀取緩存的時候由于權限問題而無法通路。

[root@dev-new-test proxy_temp]# pwd

/Data/app/nginx/proxy_temp

[root@dev-new-test proxy_temp]# ll

總用量 40

drwx------ 33 www www 4096 11月 22 17:07 0

drwx------ 34 www www 4096 11月 22 17:07 1

drwx------ 34 www www 4096 11月 22 17:07 2

drwx------ 35 www www 4096 11月 22 17:07 3

drwx------ 35 www www 4096 11月 22 17:16 4

drwx------ 35 www www 4096 11月 22 17:16 5

drwx------ 34 www www 4096 11月 22 16:46 6

drwx------ 33 www www 4096 11月 22 16:46 7

drwx------ 33 www www 4096 11月 22 16:47 8

drwx------ 33 www www 4096 11月 22 17:07 9

發現nginx的緩存目錄都是www權限,而nginx程序的啟動使用者是nobody,因為需要将緩存的目錄權限修改成nobody!

[root@dev-new-test proxy_temp]# ps -ef|grep nginx

nobody 28072 46482 0 18:09 ? 00:00:00 nginx: worker process 

......

[root@dev-new-test proxy_temp]# chown -R nobody.nobody ./*

drwx------ 33 nobody nobody 4096 11月 22 17:07 0

drwx------ 34 nobody nobody 4096 11月 22 17:07 1

drwx------ 34 nobody nobody 4096 11月 22 17:07 2

drwx------ 35 nobody nobody 4096 11月 22 17:07 3

drwx------ 35 nobody nobody 4096 11月 22 17:16 4

drwx------ 35 nobody nobody 4096 11月 22 17:16 5

drwx------ 34 nobody nobody 4096 11月 22 16:46 6

drwx------ 33 nobody nobody 4096 11月 22 16:46 7

drwx------ 33 nobody nobody 4096 11月 22 16:47 8

drwx------ 33 nobody nobody 4096 11月 22 17:07 9

這樣,就解決了上面出現的錯誤問題:

另外:

nginx代理tomcat,通路緩慢問題,還有一種可能原因就是tomcat預設的根目錄是webapps/ROOT,如果不是ROOT,可能也會導緻通路問題。

因為,在部署環境時,首先将webapps下的檔案全部删除,然後将war包上傳到webapps下改名為ROOT.war,最好說服開發同僚在打包時就

打包成ROOT.war名稱,不然後續上傳後就手動修改,這樣tomcat重新開機後,就會自動解壓ROOT.war包,自然根目錄就會是webapps/ROOT

還有在部署多個tomcat執行個體時,盡量不要拷貝已用的tomcat并修改端口後投入使用,最好是拷貝源碼解壓後的純淨的tomcat,然後修改端口投入使用。

當然,通路頁面沒有反應時,也可能是因為伺服器磁盤爆滿導緻!多方面考慮吧~

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************

本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/6090907.html,如需轉載請自行聯系原作者

繼續閱讀