我有启用缓存的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} ,无论文件是否存在在缓存中。
但是,#1服务器块将始终运行,因此它将在其中触发“ my_script.lua”。
而且,当文件不在缓存中时,#2服务器块将一次又一次地运行,它将再次再次触发#2服务器块中的'my_script.lua'。 / p>
有没有办法解决?也许,以某种方式检查#1块中是否在缓存中存在文件?怎么样?