带有 proxypass 的 nginx 位置正则表达式

带有 proxypass 的 nginx 位置正则表达式

我对 nginx 很陌生,所以如果我问一些明显的问题,请提前原谅。

我想做的是将请求代理传递到另一台服务器,该请求以以下形式到达我的 nginx 服务器:

http://mysite/locationA/results?-variablerandomtexthere-test=true

尝试这样做的方法是:

  location ~* ^/locationA/results\?(.*)test=true$ {
allow 127.0.0.1;
deny all ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass   http://myserver.org/ ;
proxy_redirect off;
}

上面的例子不起作用,通过一些谷歌搜索,我发现你不能在带有 proxy_pass 的位置上使用正则表达式。

还有其他方法可以实现这一目标吗?

答案1

我已经弄清楚如何通过执行以下操作来实现此目标:

 location / {

 if ($arg_test ~ "true") {
    set $gotoserver 1;
    }
if ($uri ~* "(queries|results)") {
   set $gotoserver  "${gotoserver}1" ;
    }
if ($gotoserver = 11) {
proxy_pass http://myserver.org ;
    }
}

相关内容