我得到了一个像这样的nginx.conf:
local /api/{
# lua_code_cache off;
default_type application/json;
content_by_lua_file webapi.lua;
}
在webapi.lua中,我得到了这样的代码:
require("LuaXml")
local xml = xml
function foo1(args)
dofile(file1)
local var = var
xml.load(file1)
end
function foo2(args)
dofile(file2)
local var = var
xml.load(file2)
end
输出是:
我第一次请求foo1时,一切都是文件,本地var在file1中获取值,xml工作文件。 第二次我请求foo2时,本地var被赋值给file1中的值而不是file2中的值,xml是nil值,日志中写着“尝试” 索引零值“。
有人可以教我吗??
答案 0 :(得分:0)
这不是ngx_lua缓存你的dofile
调用,但你自己加载的Lua代码(也可能包括你正在使用的第三方Lua模块)通过创建新的Lua来污染Lua全局命名空间全局变量(如全局“xml”变量)。有关详细信息,请参阅以下文档:
https://github.com/openresty/lua-nginx-module#lua-variable-scope