Nginx反向代理Tomcat訪問時瀏覽器加載失敗,出現 ERR_CONTENT_LENGTH_MISMATCH 問題

 

問題說明:
測試機上部署了一套業務環境,nginx反向代理tomcat,在訪問時長時間處於加載中,十分緩慢!nginx

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

查看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 9tomcat

發現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]# pwd
/Data/app/nginx/proxy_temp
[root@dev-new-test proxy_temp]# chown -R nobody.nobody ./*
[root@dev-new-test proxy_temp]# ll
總用量 40
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 9app

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

另外:
nginx代理tomcat,訪問緩慢問題,還有一種可能緣由就是tomcat默認的根目錄是webapps/ROOT,若是不是ROOT,可能也會致使訪問問題。
由於,在部署環境時,首先將webapps下的文件所有刪除,而後將war包上傳到webapps下更名爲ROOT.war,最好說服開發同事在打包時就
打包成ROOT.war名稱,否則後續上傳後就手動修改,這樣tomcat重啓後,就會自動解壓ROOT.war包,天然根目錄就會是webapps/ROOT測試

還有在部署多個tomcat實例時,儘可能不要拷貝已用的tomcat並修改端口後投入使用,最好是拷貝源碼解壓後的純淨的tomcat,而後修改端口投入使用。spa

固然,訪問頁面沒有反應時,也多是由於服務器磁盤爆滿致使!多方面考慮吧~

相關文章
相關標籤/搜索