NGINX位置块始终重定向到不同的位置

NGINX位置块始终重定向到不同的位置,nginx,Nginx,我的NGINX托管了许多应用程序,这些应用程序通常都使用相同的api。我的nginx有一个api的位置块,所以 location /default-api/ { proxy_pass https://some/location.com; } 通常每个GUI都希望使用相同的api,但偶尔也有人希望更改特定应用程序使用的api。我希望将每个GUI配置为命中不同的url,这样以后如果有人想要更改其api,就可以更容易地重定向该url,而不是将每个url硬编码到我想要重定向到默认api的每个位置

我的NGINX托管了许多应用程序,这些应用程序通常都使用相同的api。我的nginx有一个api的位置块,所以

location /default-api/ {
   proxy_pass https://some/location.com;
}
通常每个GUI都希望使用相同的api,但偶尔也有人希望更改特定应用程序使用的api。我希望将每个GUI配置为命中不同的url,这样以后如果有人想要更改其api,就可以更容易地重定向该url,而不是将每个url硬编码到我想要重定向到默认api的每个位置块中

所以实际上我想要的是,如果它能起作用的话

location /foo-api/ {
    redirect /default-api/; 
}
位置/酒吧api/{ 重定向/默认api/; }

我想当我第一次使用nginx时,我看到了一个非常简单的指令,但是我现在找不到它。我知道有很多指令可以做到这一点,但我所知道的指令中没有一条是干净到值得去做的

重写需要一个过于复杂的正则表达式,重定向需要客户端在获得重定向后进行新的查询。proxy_pass执行一些不必要的代理逻辑,这三种逻辑似乎都需要我将servername硬编码到重定向路径中。我能想到的最干净的方法可能是以一种它不适合的方式使用TryFile

有没有更简单的指令来执行这样的内部重定向?

两个建议

1) 注释掉
位置/fooapi
块,除非需要:

location / {
    rewrite ... ... break;   # if required to normalize the /prefix/...
    proxy_pass ...;
}
# location / foo-api/ { }    # disabled - use `location /`
2) 使用命名位置:

location /default-api/ {
    try_files /nonexistent @api;
}
location /foo-api/ {
    try_files /nonexistent @api;
}
location @api {
    rewrite ... ... break;   # if required to normalize the /prefix/...
    proxy_pass https://some/location.com;
}

是的,这些都是我的想法。两者都没有我希望的那么好,但我会接受你的回答,确认没有一个简单的指令可以做我想做的事情,我错过了:)
location /default-api/ {
    try_files /nonexistent @api;
}
location /foo-api/ {
    try_files /nonexistent @api;
}
location @api {
    rewrite ... ... break;   # if required to normalize the /prefix/...
    proxy_pass https://some/location.com;
}