2013-05-27 78 views
4

我想通過直接查找靜態文件來在應用中緩存某些URL。但是,靜態緩存文件可能不存在,所以我只想在文件存在的情況下重定向請求。我想我可以用try_files來做這件事,但到目前爲止,我還沒有成功地做到這一點。配置nginx靜態緩存某些URL

這裏是我的嘗試:

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; 
} 
+0

做正則表達式時,你應該用〜'location〜/bla(.*)bla { –

回答

0

你嘗試~,我還用[^/]避免貪婪?正則表達式

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