Здесь происходят две вещи:
- Вы кодируете таблицу как JSON с
cjson.encode
, это возвращает строку ngx.var
может содержать только строки, как переменные nginxтакже может использоваться для директив, отличных от Lua
Если вы хотите переносить комплексные значения из одного блока в другой по одному и тому же запросу, ngx.ctx - это то, что вы ищете.
Например:
rewrite_by_lua_block {
ngx.ctx.tags = {language="english"}
}
...
log_by_lua_block {
ngx.log(ngx.ERR, "language: ", ngx.ctx.tags.language)
}
Обратите внимание, что здесь не требуется преобразование JSON.