redis値を読み取ってnginx変数に保存する方法はありますか?
サブドメインが異なるIPを指すマルチドメインWebサイトに使用したいと思います。すべてのサブドメインは、次のようにredisに保存されます。
"subdomain" => "address_for_proxy_pass"
したがって、必要なのは、サブドメインを解析して(done)、それを変数に格納して(done)、redisクエリを実行して(done)、結果を変数に格納することです。これを簡単に行う方法は?
lua-resty-redis は使用できませんset_by_lua
- https://github.com/openresty/lua-resty-redis#limitations
ただし、を使用$foobar
して lua で直接設定できます。詳細はこちらから入手できます: http://openresty.org/#DynamicRoutingBasedOnRedis (OP とコメントに感謝します)。ngx.var.foobar
access_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;