Я использую 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 бесполезно. Мысли?