Hello!
2015-10-15 20:54 GMT+08:00 Fu Jiahui:
> 使用nginx访问两个不同的server,子请求A返回成功后
>
> 使用子请求A的响应body 作为 子请求B的请求body来访问另外一个服务器
>
> 这个时候 子请求的 request_body 和 content-length应该如何设置啊
>
> 使用echo nginx module中的ngx_http_echo_set_content_length_header模块来设置
>
> 不会发起向后端服务器的请求
>
如何使用 ngx_lua 模块的话,只需要通过类似下面的 Lua 代码即可完成(不考虑大响应体和出错处理):
local res = ngx.location.capture("/A") -- 发起子请求 A
ngx.req.set_body_data(res.body) -- 用 A 的响应体来设置当前请求的请求体
local res2 = ngx.location.capture("/B") -- 子请求 B 会自动继承父亲的请求体
当然,如果你都用了 Lua 的话,都可以不用子请求和 ngx_proxy 模块。上 lua-resty-http 库效率可以更高一些,也更加灵活。
Regards,
-agentzh