我们如何使用lua在nginx中的结构中设置变量

时间:2015-06-17 07:47:18

标签: nginx lua

我需要使用lua在(nginx内部C结构)ngx_http_request_s内设置变量。

此变量将为每个请求提供唯一值。

可以这样做吗?该字段是否需要作为变量公开,还是有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您提到的第一种方法是在lua中公开要修改的变量。然后变量回调(ngx_http_variable_s::set_handler)可以改变nginx内部C结构。

第二种方法是创建lua C绑定。并且lua-nginx-module导出一些用于将C绑定到lua的C API。 以下是dyups模块的示例:binding C to ngx.luacalling C from ngx.lua。请注意,您可以通过C函数中的ngx_http_request_t *获取ngx_http_lua_get_req(L)指针。

我更喜欢的第三种方式是通过FFI模块直接在ngx.lua中调用C函数。 但它不适用于你的情况,没有好办法在FFI中调用当前的lua_State *指针或ngx_http_request_t *指针C函数。