有没有办法读取redis值并将其存储到nginx变量中?
我想将它用于多域网站,其中子域将指向不同的IP。所有子域都将以redis形式存储:
"subdomain" => "address_for_proxy_pass"
所以我需要的是解析子域(完成),将其存储到变量(完成)中,然后进行redis查询(完成)并将结果存储到变量中。怎么这么容易?
答案 0 :(得分:3)
答案 1 :(得分:0)
lua-resty-redis无法在set_by_lua
- https://github.com/openresty/lua-resty-redis#limitations
但是,$foobar
可以使用ngx.var.foobar
通过access_by_lua
直接在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;