我有一个写入缓存目录的图像服务器(它目前只在url请求中使用相同的路径)。我已经确认在初始请求中(即缓存中没有任何内容),但是在以下请求中写入了一个新文件,try_files
无法成功找到该文件。
我的nginx.conf
是:
http {
server {
listen 8080;
# serve tiles if not in the cache
location @image_server {
content_by_lua_file "/Users/tim/work/chickpea/serve_image.lua";
}
# capture tile request e.g. /tile/l8/091080/rgb/20160924/10/938/597.jpg
# regex named capture groups for each param
location ~ ^/tile/(?<layer>[^/]+)/(?<pathrow>[^/]+)/(?<type>[^/]+)/(?<date>[^/]+)/(?<z>[^/]+)/(?<x>[^/]+)/(?<y>[^.]+) {
root cache;
set $cachepath "cache/$layer/$pathrow/$type/$date/$z/$x/$y.jpg";
try_files $cachepath @image_server;
add_header X-Static hit;
}
..
我已确认,在/tile/l8/091080/rgb/20160924/10/938/597.jpg
的请求中,$cachepath
为cache/l8/091080/rgb/20160924/10/938/597.jpg
且597.jpg
位于正确的路径中。我已尝试使用带有和不带前导cache/
的$ cachepath,但似乎都没有。
答案 0 :(得分:2)
完成这项工作需要进行两项更改:
将root
指令设为绝对路径,否则有效/usr/local/nginx/cache
向$cachepath
变量添加前导斜杠。将根指令值和$cachepath
附加在一起以确定完整的文件路径。