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


 

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

通過瀏覽器調試(F12鍵->Console),發現有錯誤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]# 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 9

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

另外:
nginx代理tomcat,訪問緩慢問題,還有一種可能原因就是tomcat默認的根目錄是webapps/ROOT,如果不是ROOT,可能也會導致訪問問題。
因為,在部署環境時,首先將webapps下的文件全部刪除,然后將war包上傳到webapps下改名為ROOT.war,最好說服開發同事在打包時就
打包成ROOT.war名稱,不然后續上傳后就手動修改,這樣tomcat重啟后,就會自動解壓ROOT.war包,自然根目錄就會是webapps/ROOT

還有在部署多個tomcat實例時,盡量不要拷貝已用的tomcat並修改端口后投入使用,最好是拷貝源碼解壓后的純凈的tomcat,然后修改端口投入使用。

當然,訪問頁面沒有反應時,也可能是因為服務器磁盤爆滿導致!多方面考慮吧~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM