使用ngxin反向代理到webman服務(wù)的8787端口,webman提供了一個下載功能,使用的response()->download()方法下載大小超過2M的文件,16個進程,前端使用window.open()打開該鏈接下載文件,會間歇性出現(xiàn)下載失敗的問題,大多數(shù)時候可以,但是不穩(wěn)定,不時出現(xiàn)下載失敗的情況。
這個下載服務(wù)是收費的必須要穩(wěn)定運行才行吖請大佬們幫忙看看是么子問題,跪謝。
nginx代理配置:
CleanShot 2022-10-21 at 18.14.35@2x.png
webman代碼:
CleanShot 2022-10-21 at 18.22.34@2x.png
前端:
下載的其實是同一個文件,間歇性失敗
CleanShot 2022-10-21 at 18.24.01@2x.png
nginx錯誤日志:
CleanShot 2022-10-21 at 18.27.55@2x.png
日志中的crit日志下載成功也會產(chǎn)生,error日志只有下載失敗時產(chǎn)生
macOS 13
webman 1.4
事情是這樣的,雖然有個緩存目錄無權(quán)限報錯,但我測試了一下大概和這茬沒啥關(guān)系= =
主要還是代理緩存大小的問題,我在nginx中使用如下配置解決了問題
proxy_buffering on;
proxy_buffer_size 500M;
proxy_buffers 4 500M;
proxy_busy_buffers_size 500M;
proxy_temp_file_write_size 500M;
個人猜測問題是這樣產(chǎn)生的,nginx反向代理到webman,因為代理的是本地端口,所以webman很快就把所有的內(nèi)容都交付給了nginx了并斷開了和nginx的連接;但是nginx默認的代理緩存很小,只保存了webman交付內(nèi)容的很少一部分,然后就被webman斷開了連接,nginx無法獲取到剩下的內(nèi)容,因此報了[上游鏈接過早斷開]的錯誤,這里我把代理緩存加到500M就可以了,具體加到多少根據(jù)實際需求調(diào)節(jié),我這里是需要測試一個400多M的壓縮包