【发布时间】:2016-12-11 06:59:54
【问题描述】:
当涉及到多个令牌编号时,我在重写时遇到了一些问题。
我正在对我们的 API 进行版本控制,因此不推荐使用的版本调用将转到我们的最新版本。为简单起见,假设我们支持v4 和v5。当一些点击我们的v1-3 时,我们需要它转到v5。同样,如果有人点击v6,它也应该转到v5。
我们的 nginx.conf 使用 proxy_pass 和上游,所以我让每个版本在不同的端口上运行
upstream v4 {
server 127.0.0.1:3000
}
upstream v5 {
server 127.0.0.1:3001
}
然后我们使用位置块来代理
location ^~ /v5 {
proxy_pass $scheme://v5;
}
location ^~ /v4 {
proxy_pass $scheme://v4;
}
location ~* "^/v[0-9]+" {
rewrite ^/v[0-9]+/(.*)$ /$latestVersion/$1;
proxy_pass $scheme://$latestUpstream;
}
最后一个位置块适用于v0-9,但当号码是多个数字时无法捕获,例如v11,即使我使用的是+。
对此的任何帮助都会很棒。真的被这个弄糊涂了。谢谢!
【问题讨论】:
标签: nginx nginx-location