Вернуть логическое значение из метода set_by_lua_block модуля lua nginx
Я использую модуль lua nginx в своем файле конфигурации nginx. Я пытаюсь установить
Этот работает
location /set_by_lua_block_example {
set_by_lua_block $value {
return tostring(false)
}
add_header X-value "$value";
content_by_lua_block {
ngx.say('Printing from set_by_lua_block_example!')
}
}
Но этот нет.
location /set_by_lua_block_example {
set_by_lua_block $value {
return false
}
add_header X-value "$value";
content_by_lua_block {
ngx.say('Printing from set_by_lua_block_example!')
}
}
1 ответ
The set_by_lua
семейство функций ожидает вывода строки следующим образом:
синтаксис : set_by_lua $res [$arg1 $arg2 ...]
Выполняет код, указанный в
<lua-script-str>
(...) и возвращает строковый вывод в$res
.
Это относится к set_by_lua_block
, слишком.
Более того, обратите внимание, что преобразование в вашем случае не является лишним. Вы используете это значение позже в текстовом заголовке HTTP .
Теперь, почему явныйtostring(boolean)
необходим? Это потому что lua_tolstring
используется для получения возвращаемого значения . Эта функция (и вариант tostring) принимает только строки и числа.
Если вы хотите сохранить значения для использования в другом блоке Lua, рассмотрите возможность использования ngx.ctx
.