我有NGINX托管许多应用程序,通常都使用相同的API。我的nginx有一个api的位置块,所以有点谎言
location /default-api/ {
proxy_pass https://some/location.com;
}
通常每个GUI都希望使用相同的api,偶尔有人可能希望更改特定应用程序使用的API。我希望将每个GUI配置为使用不同的URL,以便以后如果有人想要更改其api,则更容易重定向该URL,而是在每个位置对每个URL进行硬编码https://some/location.com阻止我想重定向到default-api。
如此有效我想要的东西,如果它可以工作
location /foo-api/ {
redirect /default-api/;
}
location / bar-api / { redirect / default-api /; }
location /baz-api/ {
redirect /default-api/;
}
我想当我第一次玩nginx时,我看到了一个非常简单的指令,但我现在无法找到它。我知道有很多指令可以做到这一点,但我所知道的任何指令都不够干净,值得做。
重写需要过于复杂的正则表达式,重定向要求客户端在获得重定向后进行新的查询。 proxy_pass执行一些不需要的代理逻辑,这三个似乎都要求我将servername硬编码到重定向路径中。我能想到的最干净的可能是以一种它没有制作的方式使用tryfiles。
是否有一些更简单的指令来执行这样的内部重定向?
答案 0 :(得分:2)
两个建议。
1)除非需要,否则注释location /foo-api
块:
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;
}