nginx 对 GET 参数进行哈希处理

nginx 对 GET 参数进行哈希处理

我有两台 Varnish 服务器,计划添加更多 Varnish 服务器。我使用 nginx 负载均衡器将流量分配到这些 Varnish 服务器。为了充分利用每台 Varnish 服务器的最大 RAM,我需要相同的请求到达相同的 Varnish 服务器。相同的请求可以通过请求 URL 中的一个 GET 参数(例如“a”)来识别

在正常代码中,我会做类似的事情-(如果我需要在 2 个 Varnish 服务器之间划分所有流量)

if($arg_a % 2 == 0) {
    proxy_pass varnish1;
}

if($arg_a % 2 == 1) {
    proxy_pass varnish2;
}

这基本上是对 GET 参数 a 进行奇偶校验,然后决定向哪个上游池发送请求。我的问题是-

  1. 此类代码在 nginx 中的对应代码是什么?我不知道 nginx 是否接受模块化
  2. nginx (0.8.54) 中是否有更好/更高效的内置哈希函数可供我使用。将来我想添加更多上游池,这样我就不需要将 %2 更改为 %3 %4 等等
  3. 还有其他方法可以解决这个问题

答案1

获取查询字符串变量(例如 $arg_x)并将其插入http://wiki.nginx.org/HttpUpstreamRequestHashModule

相关内容