File 配置nginx以静态缓存某些URL

File 配置nginx以静态缓存某些URL,file,caching,nginx,rewrite,try-catch,File,Caching,Nginx,Rewrite,Try Catch,我想通过直接查找静态文件在我的应用程序中缓存某些URL。但是,静态缓存的文件可能不存在,因此我只想在文件存在时重定向请求。我想我可以用try_文件来实现这一点,但到目前为止,我还没有成功地做到这一点 以下是我尝试过的: location ^/(.*)/(.*)/other/stuff/(.*)/this-is-static { try_files /static-cache/$1/$2/$3/this-is-static @app; } 静态缓存是在同一文件中配置的内部位置。这似乎没有达到

我想通过直接查找静态文件在我的应用程序中缓存某些URL。但是,静态缓存的文件可能不存在,因此我只想在文件存在时重定向请求。我想我可以用try_文件来实现这一点,但到目前为止,我还没有成功地做到这一点

以下是我尝试过的:

location ^/(.*)/(.*)/other/stuff/(.*)/this-is-static {
  try_files /static-cache/$1/$2/$3/this-is-static @app;
}
静态缓存
是在同一文件中配置的内部位置。这似乎没有达到预期效果。怎么了

我得到的最接近的结果是,它重写了每个请求(因此,当文件未缓存时失败):


您是否尝试了
~
?,我还使用了
[^/]
来避免贪婪的正则表达式

location ~ /([^/]*)/([^/]*)/other/stuff/([^/]*)/this-is-static {
    try_files /static-cache/$1/$2/$3/this-is-static @app;
}
location @app {
    #handle non cached files
}

在执行正则表达式时,应该使用~
location~/bla(.*)bla{
location ~ /([^/]*)/([^/]*)/other/stuff/([^/]*)/this-is-static {
    try_files /static-cache/$1/$2/$3/this-is-static @app;
}
location @app {
    #handle non cached files
}