Как проверить, существует ли файл в кеше, внутри конфига, при использовании directirve «proxy_cache» в nginx? - PullRequest
0 голосов
/ 28 июня 2019

У меня есть сервер 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, существует ли файл в кеше? Как?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...