問題說明:
測試機上部署了一套業務環境,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 目錄下,主進程在讀取緩存的時候由於權限問題而無法訪問。
可以: sudo chmod 777 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
這樣,就解決了上面出現的錯誤問題: