我对 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 ;
}
}