在 Lua 中使用子请求设置 nginx 头信息

我在我的 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("获取令牌失败")
    ngx.exit(401);
  end

当我尝试设置“ngx.headers”或“ngx.req.set_headers()”方法时,它会抛出异常。任何帮助将不胜感激。

点赞