4

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

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

"subdomain" => "address_for_proxy_pass"

所以我需要解析子域(完成),将其存储到变量(完成)中,然后进行 redis 查询(完成)并将结果存储到变量中。如何轻松做到这一点?

4

2 回答 2

3

set_by_lua + ngx.location.capture

于 2012-07-18T21:35:13.743 回答
0

lua-resty-redis 不能用于set_by_lua- https://github.com/openresty/lua-resty-redis#limitations

但是,$foobar可以通过ngx.var.foobarusing直接在 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;
于 2014-11-19T02:09:15.267 回答