![特定位置的 Nginx 正则表达式](https://linux22.com/image/762702/%E7%89%B9%E5%AE%9A%E4%BD%8D%E7%BD%AE%E7%9A%84%20Nginx%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.png)
我有一个用于后端的 proxy_pass,但在这种情况下,我应该提供一些存储在目录中的静态文件。我试过这个:
server {
listen 8180;
location ~ ^/Backend?.(gif|jpg|png|jpeg|pdf|xls|xlsx)$ {
root /data/images;
}
location /Backend {
proxy_pass http://docker-conciliador;
}
}
但是当我尝试 URL 时/Backend/12345.jpg
它不起作用。
我怎样才能为特定位置创建一个正则表达式,并使该位置也具有 proxy_pass???
答案1
您的正则表达式^/Backend?.(gif|jpg|png|jpeg|pdf|xls|xlsx)$
不正确,并且会匹配如下内容:
/BackendAgif
/BackenBjpg
因为?
代表“匹配一次或不匹配”,所以它实际上读作“d”或不匹配。点.
代表任何一个字符。
正确答案是:
location ~ ^/Backend/.*\.(gif|jpg|png|jpeg|pdf|xls|xlsx)$ {
root /data/images;
}
其中,.*
为任意字符,无字符或任意数字。 为\.
点(转义)。