Nginx – 从redis中读取值并将其存储到variables中

有没有办法读取redis值并将其存储到nginxvariables中?

我想将其用于多域名网站,其中子域名将指向不同的IP地址。 所有的子域名将被存储在redis中,如下所示:

"subdomain" => "address_for_proxy_pass" 

所以我需要的是parsing子域(完成),将其存储到variables(完成),而不是做redis查询(完成),并将结果存储到variables。 如何轻松做到这一点?

set_by_lua + ngx.location.capture ?

lua-resty-redis不能在set_by_luahttps://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;