似乎 nginx 在将请求传递给上游服务器之前会缓冲请求,虽然对于大多数情况这都是可以的,但对于我来说却非常糟糕 :)
我的情况如下:
我有一个作为前端服务器的 nginx 代理了三个不同的服务器:
- 使用典型 php 应用的 apache 服务器
- 由我自己用 python 和 gevent 构建的开源 comet 服务器 shaveet
- 再次使用 gevent 构建的文件上传服务器,它可以代理上传到 rackspace cloudfiles 的数据,同时接受来自客户端的上传。
#3 是问题所在,目前我遇到的问题是 nginx 缓存所有请求,然后将其发送到文件上传服务器,最终由该服务器再将其发送到 cloudfiles,而不是在获得每个块时立即将其发送(这样可以加快上传速度,因为我可以将 6-7MB/s 的数据推送到 cloudfiles)。
我使用 nginx 的原因是要在一个 IP 下拥有三个不同的域名,如果不能做到这一点,我就必须将文件上传服务器移到另一台机器上。