【发布时间】:2011-08-23 05:08:36
【问题描述】:
似乎 nginx 在将请求传递给上游服务器之前会对其进行缓冲,而在大多数情况下这对我来说是可以的,但它非常糟糕:)
我的情况是这样的:
我有 nginx 作为前端服务器来代理 3 个不同的服务器:
- 具有典型 php 应用程序的 apache
- 我用python和gevent构建的shaveet(一个开源comet服务器)
- 使用 gevent 再次构建文件上传服务器,代理上传到 rackspace 云文件 同时接受来自客户端的上传。
#3 是问题所在,现在我所拥有的是 nginx 缓冲所有请求,然后将其发送到文件上传服务器,文件上传服务器又将其发送到 cloudfiles,而不是在收到每个块时发送它(那些使上传速度更快,因为我可以将 6-7MB/s 推送到云文件)。
我使用 nginx 的原因是有 3 个不同的域和一个 IP,如果我不能这样做,我将不得不将文件上传服务器移动到另一台机器上。
【问题讨论】:
-
大家都知道,根据 #nginx 和 #lighttpd 中的 ppl ,不可能在它们两个上禁用请求缓冲:(
-
对于您的#3,您是否使用了 gevent
-
如果您的服务器可以分配多个 IP,则可以将专用上传服务器绑定到第二个 IP。结果是您需要单独的主机名,这可能会导致客户端出现跨域策略问题。
标签: file-upload nginx asyncfileupload gevent