Ich habe einige Probleme mit dem Umschreiben, wenn es um mehrere Token-Nummern geht.Nginx Rewrite mit Regex Mehrere Token (+)
Ich arbeite an Versionierung unserer API, so dass veraltete Aufrufe unserer Version auf unsere neueste Version gehen. Der Einfachheit halber möchten wir sagen, dass wir v4
und v5
unterstützen. Wenn einige unsere v1-3
treffen, müssen wir es zu v5
gehen. Ebenso, wenn jemand v6
schlägt, sollte es auch zu v5
gehen.
Unsere nginx.conf verwendet proxy_pass mit vorgeschaltetem so habe ich jede Version, die wir
upstream v4 {
server 127.0.0.1:3000
}
upstream v5 {
server 127.0.0.1:3001
}
blockiert dann auf Proxy verwenden Standort auf einem anderen Port läuft
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;
}
Der letzte Standort Block arbeitet für v0-9
aber nicht fangen, wenn die Zahl mehrere Ziffern wie v11
ist, obwohl ich die +
benutze.
Jede Hilfe dazu wäre großartig. Wirklich verwirrt dadurch. Vielen Dank!
Danke für die Erklärung, das war wirklich hilfreich. Ich habe ein unerwartetes Verhalten gefunden, bei dem '/ v40..9' und'/v50 ... 9' zu den '/ v4' und'/v5' Positionen gehen, wo ich möchte, dass sie von '/ v' abgefangen werden Lage. Hast du Vorschläge dafür? Ich habe versucht, Regex wie '(/ | $)' zu tun, aber das hat nicht funktioniert. – Dan