You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nginx的set_by_lua_file指令中传参并在Lua脚本中读取

问题解答

你给出的nginx.conf配置是可行的,完全符合ngx_lua模块的set_by_lua_file指令的参数传递规则。

参数获取方法

你之前尝试的几种方式都不适用当前运行环境:

  • $0/$1属于Nginx原生变量语法,无法直接在Lua脚本内使用
  • 普通Lua脚本的arg表是命令行执行场景下的全局参数表,在ngx_lua的Nginx运行上下文中不存在

你需要使用ngx_lua模块提供的ngx.arg全局表读取传入的参数,参数按照你在配置中填写的顺序从索引1开始存储。你当前配置只传入了"user:"一个参数,直接在some_file.lua中读取ngx.arg[1]即可拿到该值。

完整示例

some_file.lua参考代码如下:

-- 读取配置传入的前缀参数
local prefix = ngx.arg[1]
-- 此处可编写你的业务逻辑生成对应实例地址
local res_address = prefix .. "10.0.0.5:9001"
-- 最终return的值会自动赋值给Nginx中的$instance_address变量
return res_address

如果你需要传递多个参数,直接在配置里按空格分隔追加即可,示例配置如下:
set_by_lua_file $instance_address conf/some_file.lua "user:" "prod" "2024"
之后在Lua脚本中分别用ngx.arg[1]、ngx.arg[2]、ngx.arg[3]就能依次拿到对应参数。

内容的提问来源于stack exchange,提问作者juleslasne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:39:03