Nginx - 从redis读取值并将其存储到变量中

时间:2012-07-18 16:05:06

标签: nginx redis subdomain

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

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

"subdomain" => "address_for_proxy_pass"

所以我需要的是解析子域(完成),将其存储到变量(完成)中,然后进行redis查询(完成)并将结果存储到变量中。怎么这么容易?

2 个答案:

答案 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;