如何使用 GET 参数设置 Nginx 负载均衡器?

如何使用 GET 参数设置 Nginx 负载均衡器?

我想知道是否可以使用 GET 参数来做出决策,从而在两个服务器之间实现平衡。

谢谢

答案1

您需要使用if语句,以便根据查询参数做出决策。但是,由于proxy_passif在块内使用指令不安全,您需要将请求重写到不同的位置。例如:

location /foo {
    if ($arg_test = "testing") {
        rewrite . /testing;
    }
}

location /testing {
    internal;
    proxy_pass http://localhost:8080;
}

答案2

您尝试过使用if$request_uri吗?

location / {
    if ($request_uri = "/s?q=test") {
        proxy_pass …
    }
}

但是,我不建议使用上述方法。更好的方法是使用location$arg_,并根据逻辑请求进行过滤,而不是根据完整的GET请求字符串进行过滤:

location = /s {
    if ($arg_q = "test") {
        proxy_pass …
    }
}

相关内容