Каков наилучший способ настройки LRU-кэша с использованием open-resty-скриптов lua в прокси nginx - PullRequest
0 голосов
/ 26 июня 2018

Я использую openresty lua (https://github.com/openresty) для настройки нашего прокси nginx. У меня есть один основной proxy.template, который определяет 3 местоположения, но я хочу использовать только один кэш LRU для нескольких вызовов инициализации процесса (так как они занимают так долго и ничего больше, поэтому я использую скрипт). Я хочу определить переменную, которая может быть передана в каждое место, но я уверен, что я делаю это неправильно. У меня есть:

  #init_by_lua_file $lru_cache /etc/scripts/lua/process_cache.lua;

  location /process {
      access_by_lua_file /etc/scripts/lua/process_access.lua;

      proxy_set_header Content-Type "application/json";
      proxy_set_header Accept "application/json";

      proxy_ssl_server_name      on;

      proxy_pass $target;
  }

  location /process/init {
      set_by_lua_file $lru_cache /etc/scripts/lua/process_cache.lua;

      add_header Access-Control-Expose-Headers set-cookie;
      add_header Access-Control-Allow-Headers set-cookie;

      access_by_lua_file /etc/scripts/lua/process_init.lua;
  }

Process_cache создает кэш (по одному на каждый запуск прокси), и я бы хотел, чтобы на него ссылались process_init.lua и process_access.lua, которые делают разные вещи. Например, process_init вызывается только один раз для инициализации пользовательского интерфейса и устанавливает конкретные записи в кэше, process_access проверяет, чтобы убедиться, что срок действия записи не истек, и, если не использует его, в противном случае создает новую запись, так что длительный вызов к другому серверу не нужен.

Вышеприведенное потребует, чтобы переменная lru_cache была передана между двумя расположениями. Мои последние попытки были в области размещения process_cache.lua в пути / process / init, но каждый раз он просто инициализировался, поэтому начинать с пустого кэша каждый вызов / process / init бесполезно. Мысли?

1 Ответ

0 голосов
/ 28 июня 2018

считаете ngx.shared? Вы можете указать конкретное время для ваших строк.

: https://github.com/openresty/lua-nginx-module#ngxshareddict?

...