2015-06-17 1 views
1

У меня есть требование установить переменную внутри (внутренняя структура C nginx) ngx_http_request_s с помощью lua.Как установить переменную внутри структуры в nginx с помощью lua

Эта переменная будет иметь уникальное значение для каждого запроса.

Можно ли это сделать? Должно ли поле быть выставлено как переменная или есть ли другой способ сделать это?

+0

Это внутренняя структура C nginx? Возникает ли у вас вопрос о том, подвергается ли Lua для модификации? –

+0

@EtanReisner Да, это внутренняя структура nginx C, которую я модифицировал, чтобы добавить ngx_str_t *. Я хочу знать, является ли обнажение переменной единственным способом ее установки или мы можем сделать это любым другим способом. –

ответ

1

Первый способ, которым вы упоминали, - выставить переменную, которая должна быть изменена в lua. И тогда переменный обратный вызов (ngx_http_variable_s::set_handler) может изменить внутреннюю структуру C nginx.

Второй способ - создать привязки lua C. И lua-nginx-module экспортирует некоторый C API для привязки C к lua. Вот пример из модуля dyups: binding C to ngx.lua и calling C from ngx.lua. Обратите внимание, что вы можете получить указатель ngx_http_request_t * через ngx_http_lua_get_req(L) в функции C.

Третий способ, который я предпочитаю, - вызвать функцию C непосредственно в ngx.lua через модуль . Но он не может работать на ваш случай, нет никакого способа получить текущий указатель lua_State * или ngx_http_request_t * указатель в функции FFI, называемой C.

Смежные вопросы