我將nginx配置爲使用proxy_pass指令進行文件上傳的node.js應用程序的反向代理。 它的工作原理,但我的問題是,nginx等待整個文件正文被上傳,然後將其傳遞到上游。這對我造成問題,因爲我想跟蹤我的應用程序的上傳進度。任何想法如何配置nginx以便將文件正文實時傳輸到上游?nginx文件使用proxy_pass上傳流式傳輸
回答
沒有辦法(至少截至目前)。在nginx開始將其發送到上游之前,完整的請求將被緩存。要跟蹤上傳的文件,您可以嘗試upload progress模塊。
更新:在nginx 1.7.11中,proxy_request_buffering指令可用,它允許禁用請求主體的緩衝。它應該小心使用,請參閱文檔。
上傳進度模塊非常棒,但我們使用多臺服務器進行負載平衡後的上傳處理,因此進度更新請求總是會被路由到另一臺服務器(即使有一些負載平衡技巧)。 – bbbonthemoon
我懷疑:
proxy_buffering off;
是你需要什麼,看到http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering
我試過了。不幸的是,這條指令似乎只適用於響應緩衝(如上所述) – bbbonthemoon
下面是一個用於直接代理上傳數據流的nginx票據http://trac.nginx.org/nginx/ticket/251希望他們可以在某個時候實現=/ – TekTimmy
通過將proxy_request_buffering設置爲off,Tengine(來自nginx的分支)支持無緩衝上載。
http://tengine.taobao.org/document/http_core.html
更新:在nginx的1.7.11的proxy_request_buffering僞指令,如@Maxim Dounin上述
即使proxy_request_buffering關閉,該請求仍然被緩存。來自doc:「當您關閉proxy_request_buffering或fastcgi_request_buffering時,Tengine會將主體發送到後端,或者它收到的不止是client_body_postpone_size數據,或者已收到整個請求主體。」 –
- 1. 使用WCF流式傳輸上傳文件,從流式傳輸中讀取微小的文件
- 2. 使用RTSP流式傳輸mp4文件?
- 3. 流式傳輸wav文件
- 4. 流式傳輸MP4文件
- 5. 使用WSO2 VFS傳輸流式傳輸大文件
- 6. 通過Nginx在Django中流式傳輸mp3文件
- 7. 用櫻桃流式傳輸文件
- 8. 用spring mvc流式傳輸大文件
- 9. 傳輸文件流
- 10. 通過HTTP通過WCF流式傳輸文件上傳IOException
- 11. 使用web2py流式傳輸couchdb附件
- 12. 上傳使用PhoneGap的文件傳輸
- 13. WCF流式傳輸/分塊上傳?
- 14. 上傳音頻-http流式傳輸
- 15. 通過nginx與proxy_pass傳遞PayPal請求
- 16. 使用nginx的proxy_pass
- 17. 使用Phonegap上傳文件:文件傳輸錯誤:請求正文流耗盡
- 18. 嘗試通過nginx/fastcgi使用eventsource進行流式傳輸
- 19. 如何使用臨時文件流式傳輸mp3文件?
- 20. nginx文件上傳與client_body_in_file_only
- 21. NGINX 405上傳文件
- 22. 如何流式傳輸MP3文件(iOS)
- 23. 流式傳輸短聲文件
- 24. 流式傳輸遠程文件
- 25. 實時流式傳輸MP4文件
- 26. http實時流式傳輸mp3文件
- 27. 如何流式傳輸WAV文件?
- 28. Flash HTTP流式傳輸 - 多個文件
- 29. 流式傳輸WAV文件。 (不記錄)
- 30. 在Django中流式傳輸CSV文件
提到你收到這方面的任何解決方案? – Sreeraj