2012-09-05 143 views
33

我將nginx配置爲使用proxy_pass指令進行文件上傳的node.js應用程序的反向代理。 它的工作原理,但我的問題是,nginx等待整個文件正文被上傳,然後將其傳遞到上游。這對我造成問題,因爲我想跟蹤我的應用程序的上傳進度。任何想法如何配置nginx以便將文件正文實時傳輸到上游?nginx文件使用proxy_pass上傳流式傳輸

+0

提到你收到這方面的任何解決方案? – Sreeraj

回答

26

沒有辦法(至少截至目前)。在nginx開始將其發送到上游之前,完整的請求將被緩存。要跟蹤上傳的文件,您可以嘗試upload progress模塊。

更新:在nginx 1.7.11中,proxy_request_buffering指令可用,它允許禁用請求主體的緩衝。它應該小心使用,請參閱文檔。

+0

上傳進度模塊非常棒,但我們使用多臺服務器進行負載平衡後的上傳處理,因此進度更新請求總是會被路由到另一臺服務器(即使有一些負載平衡技巧)。 – bbbonthemoon

5

通過將proxy_request_buffering設置爲off,Tengine(來自nginx的分支)支持無緩衝上載。

http://tengine.taobao.org/document/http_core.html

更新:在nginx的1.7.11的proxy_request_buffering僞指令,如@Maxim Dounin上述

+0

即使proxy_request_buffering關閉,該請求仍然被緩存。來自doc:「當您關閉proxy_request_buffering或fastcgi_request_buffering時,Tengine會將主體發送到後端,或者它收到的不止是client_body_postpone_size數據,或者已收到整個請求主體。」 –