Openresty實現獲取內部location

2022-08-04 23:21:20 字數 1312 閱讀 1229

-- 三種方式實現獲取內部location資訊

--[[

location /api1

location /api2

]]-- 序列實現

local t1 = ngx.now()

local res1 = ngx.location.capture("/api1", )

local res2 = ngx.location.capture("/api2", )

local t2 = ngx.now()

ngx.print(res1.body, "

", res2.body, "

", tostring(t2 - t1))

-- ngx.location.capture_multi實現

-- 直接使用ngx.location.capture_multi來實現,比如訪問

local t1 = ngx.now()

local res1, res2 = ngx.location.capture_multi(

}, }

})local t2 = ngx.now()

ngx.print(res1.body, "

", res2.body, "

", tostring(t2 - t1))

-- 協程api

-- 使用ngx.thread.spawn建立乙個輕量級執行緒,然後使用ngx.thread.wait等待該執行緒的執行成功。比如訪問

local t1 = ngx.now()

local function capture(uri, args)

return ngx.location.capture(uri, args)

endlocal thread1 = ngx.thread.spawn(capture, "/api1", )

local thread2 = ngx.thread.spawn(capture, "/api2", )

local ok1, res1 = ngx.thread.wait(thread1)

local ok2, res2 = ngx.thread.wait(thread2)

local t2 = ngx.now()

ngx.print(res1.body, "

", res2.body, "

", tostring(t2 - t1))

-- 我們可以通過下面的方式實現任意乙個成功即返回,之前的是等待所有執行成功才返回。

local ok, res = ngx.thread.wait(thread1, thread2)

openresty獲取請求引數

ngx.var.arg xx與ngx.req.get uri args xx 兩者都是為了獲取請求uri中的引數,例如 strider 1 為了獲取輸入引數strider,以下兩種方法都可以 local strider ngx.var.arg strider local strider ngx.re...

OpenResty實現負載均衡

2.配置openresty 2.2 進入配置目錄 2.3 修改配置檔案 3.啟動服務 4.開啟相應埠 yum install pcre devel openssl devel gcc curlwget安裝完成後缺省會在root目錄下 進入 openresty 目錄 cd openresty 1.19...

openresty 學習筆記二 獲取請求資料

openresty 獲取post或者get的請求引數。這個是要用openresty 做介面必須要做的事情。這裡分幾種型別 get,post urlencoded post form data 可以根據需要選擇某種提交請求的方式,也可以集合封裝成乙個工具庫來使用 get的請求資料比較簡單 functi...