Hello!
2015-08-27 11:48 GMT+08:00 Jinhua Luo:
> capture的request.body也有这样的问题?
>
ngx.location.capture 对于请求体要稍微好一些。因为请求体不会加载进 Lua 空间。而是由 nginx
核心自动进行缓存(比如在内存中或在临时文件中)。
> 假设我要将PUT上传的大文件(1GB)分发到多个后端webdav服务器,那只能先收完这个大文件,才能往外发,而不能流式收发?
如果你要进行流式收发,一开始就不应该使用 ngx.location.capture :)
> 当然,可以通过ngx.req.socket,调用cosocket
> API来实现,但是因为子请求要求是完整的req.body,所以这样一来就不能利用子请求了,只能使用cosocket实现的http
> api,但是这些api似乎还不完善吧?不如nginx内置的proxy_pass可靠吧?
>
proxy_pass 一般也会全缓存请求体。在开启 proxy_cache
时,也总是会全缓存响应体。最好的流式处理选择应该是对上游和下游都使用 cosocket.
Regards,
-agentzh