使用Lua的子请求设置nginx头

时间:2016-03-29 22:34:26

标签: nginx lua

我在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.headersngx.req.set_headers()方法时,它会抛出异常。任何帮助将不胜感激。

0 个答案:

没有答案