特定位置的 Nginx 正则表达式

特定位置的 Nginx 正则表达式

我有一个用于后端的 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;
    }

其中,.*为任意字符,无字符或任意数字。 为\.点(转义)。

相关内容