【问题标题】:How can we set a variable inside a structure in nginx using lua我们如何使用 lua 在 nginx 的结构中设置变量
【发布时间】:2016-03-31 00:46:08
【问题描述】:

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

这个变量对于每个请求都有一个唯一的值。

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

【问题讨论】:

  • 那是nginx内部的C结构?你的问题是它是否暴露在 lua 中进行修改?
  • @EtanReisner 是的,它是一个内部 nginx C 结构,我已对其进行了修改以添加一个 ngx_str_t * 。我想知道公开一个变量是否是唯一可能设置它的方法,或者我们可以通过任何方式来做到这一点其他方式也是如此。

标签: nginx lua


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2018-07-22
    • 2022-08-04
    • 2016-04-21
    • 2013-07-13
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    相关资源
    最近更新 更多