我正在使用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引用它。例如,对于UI初始化,仅调用一次process_init并建立特定的缓存条目,process_access检查以确保该条目未过期(如果未使用),否则将创建一个新条目,以便长时间调用另一台服务器不需要。
以上内容将要求在两个位置之间传递lru_cache变量。我的最新尝试是尝试将process_cache.lua放在/ process / init路径中,但是每次都只是对其进行初始化,因此从空缓存开始,每个/ process / init调用都是无用的。有想法吗?
答案 0 :(得分:1)
考虑ngx.shared吗? 您可以为字符串指定exptime。
:https://github.com/openresty/lua-nginx-module#ngxshareddict吗?