Uri*_*atz 8 file-upload nginx asyncfileupload gevent
似乎nginx在将请求传递给updstream服务器之前缓冲请求,而对于大多数情况来说它对我来说是好的,这是非常糟糕的:)
我的情况是这样的:
我有nginx作为前端服务器来代理3个不同的服务器:
#3是问题,现在我所拥有的是nginx缓冲所有请求,然后将其发送到文件上传服务器,后者又将其发送到云文件,而不是在获取它时发送每个块(那些使得上传速度更快)我可以将6-7MB/s推送到cloudfiles).
我使用nginx的原因是有3个不同的域和一个IP如果我不能这样做我将不得不将fileupload服务器移动到另一台机器.
一旦实现了这个[1]功能,Nginx就可以充当反向代理而无需缓冲上传(错误客户端请求).它应该落在1.7当前的主线上.
[1] http://trac.nginx.org/nginx/ticket/251
更新
此功能自1.7.11开始通过标志提供
proxy_request_buffering on | off;
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering
根据Gunicorn 的说法,他们建议您使用 nginx 来实际缓冲客户端并防止 slowloris 攻击。所以这种缓冲可能是一件好事。但是,我确实在我提供的那个链接上看到了一个选项,其中提到了删除代理缓冲区,目前尚不清楚这是否在 nginx 中,但看起来好像是。当然,这是在您运行 Gunicorn 的假设下,而您没有运行。也许它对你仍然有用。
编辑:我做了一些研究,nginx 中的缓冲区禁用用于出站长轮询数据。Nginx 在他们的wiki站点上声明,入站请求在被发送到上游之前必须被缓冲。
“请注意,当使用 HTTP 代理模块(甚至使用 FastCGI 时)时,整个客户端请求将在 nginx 中缓冲,然后再传递到后端代理服务器。因此,如果上传进度表正常工作,它们将无法正常工作通过测量后端服务器接收到的数据。”
小智 5
从 nginx-1.7.11 版本开始,现在可在 nginx 中使用。
请参阅文档 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering
要禁用缓冲上传指定
proxy_request_buffering off;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13197 次 |
| 最近记录: |