nginx files upload streaming with proxy_pass

2019-01-21 18:59发布

I configured nginx as reverse proxy to my node.js application for file uploads with proxy_pass directive. It works, but my problem is that nginx waits for the whole file body to be uploaded before passing it to the upstream. This causes problems for me, because I want to track upload progress at my application. Any idea how to configure nginx in order to stream file body in real time to the upstream?

3条回答
劳资没心,怎么记你
2楼-- · 2019-01-21 19:26

Tengine (a fork from nginx) support unbuffered upload by setting proxy_request_buffering to off.

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

Updated: in nginx 1.7.11 the proxy_request_buffering directive is available, as @Maxim Dounin mentioned above

查看更多
混吃等死
3楼-- · 2019-01-21 19:36

I suspect that:

proxy_buffering off;

is what you need, see http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering

查看更多
Evening l夕情丶
4楼-- · 2019-01-21 19:40

There is no way to (at least as of now). Full request will be always buffered before nginx will start sending it to an upstream. To track uploaded files you may try upload progress module.

Update: in nginx 1.7.11 the proxy_request_buffering directive is available, which allows to disable buffering of a request body. It should be used with care though, see docs.

查看更多
登录 后发表回答