首页 > 解决方案 > 用于位置、特定文件缓存的 nginx 正则表达式

问题描述

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

我复制了这个站点的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 ”,因为还有其他类别但具有不同的源服务器。

谢谢你。

标签: regexnginxlocation

解决方案


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

同样,这并不$意味着它是行尾或字符串的结尾,并且后面没有任何内容,因此如果您后面有某些东西,.css或者.js可能无法捕捉到它们。


推荐阅读