在Nginx中使用“ proxy_cache” directirve时,如何检查配置中的缓存中是否存在文件?

时间:2019-06-28 13:25:05

标签: nginx caching lua

我有启用缓存的nginx服务器:

 proxy_cache_path /var/cache/ levels=1:2 keys_zone=my_project1:10m max_size=1G inactive=15d;

服务器块:

# 1st block
server {
  listen 80;
  server_name server1_cached;


  location /images_test {
    default_type image/png;
    proxy_cache my_project1;
    proxy_cache_key $uri;
    proxy_pass http://localhost:8080/;


    # ??
    # how to call this lua script *only when* a file exists in cache?
    # ??

    # content_by_lua_file ./my_script.lua;
  }
}

第二块:

# 2st block
server {
  listen 8080;
  server_name server1_non_cached;

  location /images_test {
    default_type image/png;
    alias /*.....*/my_project/images;
    expires max;

    # !!
    # content_by_lua_file ./my_script.lua;
  }
}

我希望只能在两个“服务器”块中的每个请求中仅一次一次 呼叫,无论文件是否存在在缓存中。

但是,#1服务器块将始终运行,因此它将在其中触发“ my_script.lua”。

而且,当文件不在缓存中时,#2服务器块将一次又一次地运行,它将再次再次触发#2服务器块中的'my_script.lua'。 / p>

有没有办法解决?也许,以某种方式检查#1块中是否在缓存中存在文件?怎么样?

0 个答案:

没有答案