小编Ari*_*iav的帖子

nginx模块为日志模块设置变量值

我想定义一个nginx变量,在请求期间设置其值,并在日志格式内使用该变量。

我目前正在用C实现一个自定义模块(目前对LUA不感兴趣)。

所需的流程:
1.配置新的日志格式:log_format my_format '$my_var1';(nginx.conf)
2.使用该格式配置新的访问日志:access_log /tmp/out my_format(nginx.conf)
3.设置请求处理程序期间的值,可使用以下类型的功能:
typedef ngx_int_t (*ngx_http_handler_pt)(ngx_http_request_t *r);

当前流程:
1.将变量设置为初始值:set $my_var1 'empty_value'; (nginx.conf)
2.通过索引按索引查找变量ngx_http_get_flushed_variable(r, index)
。3.通过分配给数据字段来更改变量值。

当我将变量打印到调试日志时,我看到变量已正确设置为更改后的值。但是,日志模块将初始变量值而不是更改后的值输出到定制访问日志。

有人可以指出我在这里想念的东西吗?
我应该使用ngx_http_add_variable函数还是使用脚本compile / complex?

来自上述电流的简短摘要:

ngx_http_variable_value_t *v;
v = ngx_http_get_flushed_variable(r, ale_srv_cf->output_variable_index);
// ... error handling if not found ....
v->data = new_value;
v->len = new_value_length;

Run Code Online (Sandbox Code Playgroud)

c variables module nginx

6
推荐指数
0
解决办法
234
查看次数

标签 统计

c ×1

module ×1

nginx ×1

variables ×1