Nginx 字节服务 http 请求

Nginx 字节服务 http 请求

我知道可以使用 Nginx 将请求分散到多个 Web 服务器上,从而实现负载平衡。此解决方案需要后端服务器具有高带宽,并且在处理大量请求时非常有效。

我希望将单个 http 请求分散到多个服务器上,以便累积带宽。在寻找实现此目的的方法时,我发现了按范围发送 http 请求的概念。

是否可以让 nginx 将主 http 请求拆分为分布在镜像服务器上的较小 http 范围请求?我更愿意避免重写所有 web 脚本,让它们完成这项工作。

答案1

使用 Nginx 可以实现这一点mod_lua,但实现起来可能相当复杂,并且需要对后端应用程序进行大量更改,因为您的后端需要能够使用 Nginx 可以组合在一起的页面部分进行响应。这将要求您在 Nginx 配置中编写 lua 脚本来收集多个后端的输出(这可以并行完成),然后将它们合并为一个响应。

或者,你也可以直接使用 OpenResty,你可以从这里。它是 Nginx 的一个修改版,主要由的作者完成mod_lua,非常适合您的要求。

为了并行执行多个后端请求,您需要ngx.location.capture_multi在 lua 脚本中使用。这是一个显示语法的示例:

res1, res2, res3 = ngx.location.capture_multi{
    { "/foo", { args = "a=3&b=4" } },
    { "/bar" },
    { "/baz", { method = ngx.HTTP_POST, body = "hello" } },
}

您可以找到有关其语法的更详尽的文档这里

相关内容