У меня есть сервер 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;
}
}
И 2-й блок:
# 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;
}
}
Я хочу иметь возможность вызывать my_script.lua
только один раз за запрос, в любом из блоков "сервера", независимо от того, существует файл в кеше или нет.
Однако серверный блок # 1 всегда будет работать и, таким образом, будет запускать в нем «my_script.lua».
И, когда файл не существует в кеше, серверный блок # 2 также будет запускаться снова и снова, он будет запускать «my_script.lua» в серверном блоке # 2 снова .
Есть ли способ это исправить? Возможно, как-то проверить в блоке # 1, существует ли файл в кеше? Как?