Я пытаюсь прокси передать местоположение, исключая только случай с регулярным выражением.
У меня есть этот URL /autocomplete/<var1>/<var2>
и я хочу, чтобы прокси прошел, только если var1
отличается от a
, так b/foo
, c/foo
ecc будет проксироваться.
В apache я использовал это:
ProxyPassMatch ^/autocomplete/a/(.*)$ !
ProxyPass /autocomplete/ http://localhost:1234/autocomplete/
В NGINX я пробовал вот что:
location ~ /autocomplete/(?<var1>.*)/(?<var2>.*) {
if ($var1 != "a") {
proxy_pass http://127.0.0.1:1234/autocomplete/$var1/$var2;
}
}
Он работает для других значений var1
, но для a
он возвращает 404.
Решено с помощью:
location ~ ^/autocomplete/(?!(a)) {
proxy_pass http://localhost:1234;
}