4

redis値を読み取ってnginx変数に保存する方法はありますか?

サブドメインが異なるIPを指すマルチドメインWebサイトに使用したいと思います。すべてのサブドメインは、次のようにredisに保存されます。

"subdomain" => "address_for_proxy_pass"

したがって、必要なのは、サブドメインを解析して(done)、それを変数に格納して(done)、redisクエリを実行して(done)、結果を変数に格納することです。これを簡単に行う方法は?

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して lua で直接設定できます。詳細はこちらから入手できます: http://openresty.org/#DynamicRoutingBasedOnRedis (OP とコメントに感謝します)。ngx.var.foobaraccess_by_lua

変数を初期化する必要があります -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 に答える