配置nginx以静态缓存某些URL

时间:2013-05-27 11:16:04

标签: file caching nginx rewrite try-catch

我希望通过直接查找静态文件来缓存我的应用中的某些网址。但是,静态缓存的文件可能不存在,因此我只想在文件存在时重定向请求。我想我可以以某种方式使用try_files,但到目前为止我还没有成功地做到这一点。

这是我试过的:

location ^/(.*)/(.*)/other/stuff/(.*)/this-is-static {
  try_files /static-cache/$1/$2/$3/this-is-static @app;
}

static-cache是在同一文件中配置的内部位置。这似乎不按预期工作。怎么了?

我得到的最接近的是,这会重写每个请求(因此在文件未缓存时失败):

location ^/(.*)/(.*)/other/stuff/(.*)/this-is-static {
  rewrite ^ /static-cache/$1/$2/$3/this-is-static;
}

1 个答案:

答案 0 :(得分:0)

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

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