nginx正则表达式用于位置,特定文件缓存

时间:2019-01-24 07:26:10

标签: regex nginx location

我需要在nginx反向代理中缓存特定文件,但是在原始服务器中,它们(开发人员)创建了许多子文件夹。我需要一些正则表达式指针来定位,以便可以找到可缓存文件。

我复制了此site's nginx配置。

nginx.conf的示例:

location /product/categoryA {
   proxy_pass http://somewhere:8081;
}
location ~* ^/product/categoryA/(.+\.(woff2|woff|jpg|jpeg|gif|png|ico|css|bmp|js|html|htm))$ {
    proxy_hide_header X-Powered-By;
    add_header X-Powered-By DCU;
    proxy_cache STATIC;
    proxy_pass http://somewhere:8081;
}

可缓存文件的示例:

domainabc.com/product/categoryA/desktop/css/somecssfile.css
domainabc.com/product/categoryA/desktop/runable/js/somejsfile.js

使用上述位置,将找不到这些.css.js文件。

我需要位置正则表达式的帮助,以便nginx可以定位这些文件而无需对子文件夹( ../ desktop / css,../ desktop / runable / js )进行硬编码

我仍然需要“ / product / categoryX ”,因为还有其他类别,但是源服务器不同。

谢谢。

1 个答案:

答案 0 :(得分:0)

由于开头为^/product/categoryA/(.+\.woff2|woff|jpg|jpeg|gif|png|ico|css|bmp|js|html|htm))$的以下正则表达式^仅会捕获行或字符串开头以/product开头的内容。如果删除^,它将捕获您想要的字符串。

同样,不是$表示它是行或字符串的结尾,并且后面没有空格,因此如果您在.css.js之后有其他内容,可能无法捕获它们也是