regex - 用于位置、特定文件缓存的 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 ”,因为还有其他类别但具有不同的源服务器。
谢谢你。
解决方案
^/product/categoryA/(.+\.woff2|woff|jpg|jpeg|gif|png|ico|css|bmp|js|html|htm))$
由于开头的以下正则表达式^
只会捕获/product
以行或字符串开头的内容。如果你删除^
它应该捕获你想要的字符串。
同样,这并不$
意味着它是行尾或字符串的结尾,并且后面没有任何内容,因此如果您后面有某些东西,.css
或者.js
可能无法捕捉到它们。
推荐阅读
- bash - 以编程方式执行到 docker 容器中
- python - 在 .count 中列出大于 n 的计数
- c# - 按钮不起作用,没有发现问题,是我写错了吗?
- discord.js - Discord.js - awaitMessages 中的条件
- reactjs - 具有范围内组件的确切名称的变量
- python - using pandas.DataFrame.to_excel without creating a new sheet
- flutter - 如何在 GridView 中禁用滚动?
- spring-cloud-gateway - Spring Cloud Gateway Logging of Request and Response using filter
- apache-spark - How do I print out a spark.sql object?
- javascript - Bootstrap dropdown-toggle no longer working after implementing javascript