我在site-routing.conf
中设置了以下位置location = "/test" {
proxy_pass http://localhost$is_args$args;
access_by_lua_file ./header.lua;
}
在我的header.lua文件中,我正在进行子请求以从其他服务获取一些数据。此服务的返回值是我想要添加到proxy_pass请求标头的标记。
header.lua中的代码如下所示:
local cjson = require "cjson"
res = ngx.location.capture(
'/get_token',
{ method = ngx.HTTP_GET, args = { id: 1234 } }
);
if res.status == ngx.HTTP_OK then
body = cjson.decode(res.body)
local token = body["token"]
ngx.log(ngx.ERR, token)
ngx.headers["Token"] = token
else
ngx.say("Failed to retrieve token")
ngx.exit(401);
end
当我尝试设置ngx.headers
或ngx.req.set_headers()
方法时,它会抛出异常。任何帮助将不胜感激。