我想知道是否可以使用 GET 参数来做出决策,从而在两个服务器之间实现平衡。
谢谢
答案1
您需要使用if
语句,以便根据查询参数做出决策。但是,由于proxy_pass
if
在块内使用指令不安全,您需要将请求重写到不同的位置。例如:
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 …
}
}