Nginx Openresty通过lua中设置ngx.var设置log_format日志中的变量不生效

这篇博客探讨了在Nginx配置中使用Lua模块时遇到的一个问题,即通过`mirror`指令镜像流量导致日志中的`hash_key`变量值与预期不符。当访问`lua_content2`时,日志打印的是IP地址,而页面显示正常值123456。问题根源在于`mirror`指令复制了原始请求的变量,而不是更新后的。尽管目前不影响业务,但这是一个需要注意的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现状

server {
    listen 18888;
   access_log logs/nothing.log main;
 	set $hash_key $remote_addr ;
 	access_by_lua_block   {
 	ngx.var.hash_key =  "123456"
 	}

    location / {
        return 200 "nothing-adx";
    }
   location /lua_content1 {
             content_by_lua_block {
				ngx.print(ngx.var.hash_key)
				return
             }
    }
	   location /lua_content2 {
		   mirror /lua_content1
             content_by_lua_block {
				ngx.print(ngx.var.hash_key)
				return
             }
    }

}
  1. 日志中有hash_key变量
  2. 访问/lua_content2 ,日志打印出来的值为IP地址,但页面打印123456正常
  3. 访问/lua_content1 ,一切正常

原因

  1. mirror流量镜像导致日志中的变量为set时候的变量

解决方案

  1. 无,目前不影响业务,不进行修正
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值