有没有办法读取redis值并将其存储到nginxvariables中?
我想将其用于多域名网站,其中子域名将指向不同的IP地址。 所有的子域名将被存储在redis中,如下所示:
"subdomain" => "address_for_proxy_pass"
所以我需要的是parsing子域(完成),将其存储到variables(完成),而不是做redis查询(完成),并将结果存储到variables。 如何轻松做到这一点?
set_by_lua + ngx.location.capture ?
lua-resty-redis不能在set_by_lua
– https://github.com/openresty/lua-resty-redis#limitations
但是,可以使用access_by_lua
通过ngx.var.foobar
直接在lua中设置$foobar
。 详情可在这里找到: http : //openresty.org/#DynamicRoutingBasedOnRedis (感谢OP和评论)。
变量必须被初始化 – set $myvar ''
# initialize variable set $backend ''; access_by_lua ' local redis = require "resty.redis" local red = redis:new() -- these ENV vars must be initialized with `env` keyword red:connect(os.getenv("REDIS_PORT_6379_TCP_ADDR"), os.getenv("REDIS_PORT_6379_TCP_PORT")) local res, err = red:get(ngx.var.appid) -- set the variable directly ngx.var.backend = res '; proxy_pass http://$backend;