有没有办法读取 redis 值并将其存储到 nginx 变量中?
我想将它用于多域网站,其中子域将指向不同的 IP。所有子域都将存储在 redis 中,如下所示:
"subdomain" => "address_for_proxy_pass"
所以我需要解析子域(完成),将其存储到变量(完成)中,然后进行 redis 查询(完成)并将结果存储到变量中。如何轻松做到这一点?
lua-resty-redis 不能用于set_by_lua
- https://github.com/openresty/lua-resty-redis#limitations
但是,$foobar
可以通过ngx.var.foobar
using直接在 lua 中设置access_by_lua
。详细信息可在此处获得: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;