从nginx位置path获取值

我将nginx设置为一个API路由器。

我怎样才能抓住“位置”path的特定部分,并dynamic地将其填充到proxy_pass? 例如:

location / users / v2 / {proxy_pass http://app.domain.com/api/ {{users}} / v2; }

我需要抓住第一个领域,在这种情况下,“用户”,并将其popup到proxy_passpath。

我发现你的原始问题和你对这个答案的评论有点矛盾。 但是要从评论中回答您的要求,您可以使用如下的location块:

 location ~ ^/(users)/v2/(.+)$ { proxy_pass http://app.domain.com/api/$1/v2/$2; } 

我假设这些path在/v2/ here之后还包含其他的东西。 我把其他东西捕获到$2以在proxy_pass使用。

如果您只想要允许用户以外的特定string,则可以使用| OR匹配规则:

 location ~ ^/(users|admins)/v2/(.+)$ 

在nginx中捕获正则expression式的一般规则是,括号内的任何正则expression式都被捕获到一个variables中。 第一个括号内容被捕获到$1等等。

当然,这个规则也有例外。 (?:users)使得nginx不能捕获这个值。 (?<variable>users)将该值捕获到variables$variable

不知道这是否会工作,但它的东西,如果你只是想在/v2之前

 location ~ ^/(.*)/v2/ { proxy_pass http://app.domain.com/api/$1/v2; }