背景:
項(xiàng)目后端程序運(yùn)行環(huán)境為centos7.6。
過程:
首先是前端頁面中大小為160多KB以上的圖片均無法加載,且后端程序捕獲到異常 IOException,查看前端請求發(fā)現(xiàn)內(nèi)存較大的圖片均請求響應(yīng)狀態(tài)為200,但返回 failed,net::ERR_INCOMPLETE_CHUNKED_ENCODING,并且后端頻繁出現(xiàn)tcp管道斷開重連異常
Caused by: java.io.IOException: Connection reset by peer
解決過程:
①考慮較小的圖片可以加載,應(yīng)nginx相關(guān)配置造成,在 nginx.conf 中 location 下添加了緩沖區(qū)的相關(guān)配置,不再使用默認(rèn)的緩沖區(qū)配置
location /nc/ {
...
proxy_buffer_size 2048k;
proxy_buffers 16 2048k;
proxy_busy_buffers_size 4096k;
proxy_temp_file_write_size 4096k;
}
②設(shè)置后發(fā)現(xiàn)1M多的文件也可加載了,但仍然有部分圖片無法加載,而 windows 環(huán)境下運(yùn)行程序沒有對應(yīng)問題。
③此時(shí)在nginx的日志文件中發(fā)現(xiàn)如下報(bào)錯(cuò)
open() "/usr/local/nginx/proxy_temp/3/01/0000000013" failed (13: Permission denied)
則此時(shí)可發(fā)現(xiàn)是由于權(quán)限不足造成。賦予文件權(quán)限后仍然報(bào)錯(cuò),此時(shí)考慮 nginx 執(zhí)行時(shí)的用戶不是 root 用戶(賦予權(quán)限是在 root 下進(jìn)行),查看 nginx 使用的用戶
ps aux | grep nginx
④發(fā)現(xiàn)不是所有的使用用戶都是 root,還存在一個(gè) nobody。在 nginx 配置文件?nginx.conf? 中添加使用用戶為 root 的配置
user root;
worker_processes 1;
⑤重啟 nginx 服務(wù)后發(fā)現(xiàn)所有文件均可加載,問題解決。
追溯
后查明nginx在加載超過緩沖區(qū)?proxy_temp_file_write_size 設(shè)置的大小時(shí)會將文件寫入 proxy_temp 中,而若此時(shí)寫入權(quán)限不足 nginx 則報(bào)拒絕訪問的錯(cuò)誤。
后續(xù)發(fā)現(xiàn)一位大佬對同樣情況的解釋。文章來源:http://www.zghlxwxcb.cn/news/detail-765163.html
https://www.jianshu.com/p/c1559fd01828文章來源地址http://www.zghlxwxcb.cn/news/detail-765163.html
到了這里,關(guān)于前端請求報(bào)錯(cuò)net::ERR_INCOMPLETE_CHUNKED_ENCODING的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!