我可以使用 nginx 位置并重写确定 proxy_pass 主机吗?

我可以使用 nginx 位置并重写确定 proxy_pass 主机吗?

我正在寻找类似的事情:

location ^/foo {
  rewrite ^/foo/(.+)/(.*)$ /$1/$2 break;
  proxy_pass http://$1:8080/$2
}

是否有某种方法可以根据重写语句的匹配来确定 proxy_pass URL?

Apache mod_rewrite 中的粗略等效项是:

RewriteRule ^/foo/(.+)/(.*)$ http://$1:8080/$2 [L,P]

答案1

您可以使用重写模块提取并设置包含所需值的变量,然后在代理指令中使用该变量。

if ($uri ~ ^/foo/(.+)/(.*)$) {
    set $part1 $1;
    set $part2 $2;
}
rewrite ^/foo/(.+)/(.*)$ /$1/$2 break;
proxy_pass http://$part1:8080/$part2;

相关内容