晕。。。忘了抄送 openresty 邮件列表了。
coderesty: 下回请直接发送到 openresty 邮件列表,不要再专门发给我了。。。汗。。。openresty
邮件列表的邮件都是直接出现在我 gmail 的 Inbox 里面的。直接给我发邮件反而让我很纠结。
Hello!
On Fri, Feb 28, 2014 at 5:55 AM, coderesty wrote:
> local reqs = {}
> table.insert(reqs, { "/proxy", vars={ip_port = "127.0.0.1:8080"} })
你这里的调用语法本身就是错误的;“vars”选项是在专门的选项 table 里,而不是和 URL 在同一级 table 里。改成下面这种形式应该就对了:
table.insert(reqs, { "/proxy", { vars = {ip_port = "127.0.0.1:8080"} } })
请仔细对照文档里的用例,不要自己想当然,以免浪费你我的时间:
https://github.com/chaoslawful/lua-nginx-module#ngxlocationcapture_multi
另外,值得一提的是,对于性能要求较高的场合,尽量不要使用 table.insert() 函数,因为它总是会先取 Lua table
的当前长度(即调用 # 运算符对应的操作)。更高效的做法是自己维护当前的数组长度,比如
local n = 0
reqs[n] = {...}
n = n + 1
reqs[n] = {...}
n = n + 1
当然,ngx.location.capture_multi() 的官方文档里的一个示例代码里使用了 table.insert(),主要是为了清楚起见。
Regards,
-agentzh