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