![Nginx proxy_pass 使用正则表达式排除 url](https://linux22.com/image/700200/Nginx%20proxy_pass%20%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%8E%92%E9%99%A4%20url.png)
我正在尝试通过正则表达式代理传递仅排除 casistic 的位置。
我有这个 url并且我仅当不同于时才/autocomplete/<var1>/<var2>
想要代理传递,因此,ecc 将被代理。var1
a
b/foo
c/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;
}