Nginx–;从redis读取值并将其存储到变量中
有没有办法读取redis值并将其存储到nginx变量中 我想使用它的多域网站,其中子域将指向不同的IP。所有子域都将存储在redis中,如下所示:Nginx–;从redis读取值并将其存储到变量中,nginx,redis,subdomain,Nginx,Redis,Subdomain,有没有办法读取redis值并将其存储到nginx变量中 我想使用它的多域网站,其中子域将指向不同的IP。所有子域都将存储在redis中,如下所示: "subdomain" => "address_for_proxy_pass" 所以我需要的是解析子域(done),将其存储到变量(done)中,然后进行redis查询(done),并将结果存储到变量中。如何轻松做到这一点?+?lua resty redis不能在由lua设置的中使用 但是,$foobar可以通过ngx.var.foobar使
"subdomain" => "address_for_proxy_pass"
所以我需要的是解析子域(done),将其存储到变量(done)中,然后进行redis查询(done),并将结果存储到变量中。如何轻松做到这一点?+?lua resty redis不能在由lua设置的
中使用
但是,$foobar
可以通过ngx.var.foobar
使用access\u by\u lua
在lua中直接设置。详情如下:(感谢OP和评论)
必须初始化变量-设置$myvar'
你不能生成nginx配置并使用它吗?还是要在每个页面请求上查询redis?嗨,Sergio!我只想在子域存在时查询redis。子域将被动态添加,所以我不能在每次创建新子域时生成配置。是的!我写信给@agentzh,他给了我一个很好的建议:
# 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;