Nginx proxy_pass 使用正则表达式排除 url

Nginx proxy_pass 使用正则表达式排除 url

我正在尝试通过正则表达式代理传递仅排除 casistic 的位置。

我有这个 url并且我仅当不同于时才/autocomplete/<var1>/<var2>想要代理传递,因此,ecc 将被代理。var1ab/fooc/foo

在 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。

答案1

解决:

location ~ ^/autocomplete/(?!(a)) {
    proxy_pass http://localhost:1234;
}

相关内容