但出於安全性考慮,決定給訪問的介面位址加個白名單功能,不在白名單的位址不允許訪問。
這裡載入了乙個對應目錄的route_config.lua,由於這個config檔案內容較小,所以我把內容直接列了出來:
--然後在content_by_lua_file 前面加這麼一句**:白名單列表
local whitelist =
--路由重寫列表
local rewritelist =
return
你會發現白名單功能就這麼完成了,而且多次測試後發現單純的路由查詢功能會比lusty快一倍以上。
1local
_m =
2local mt =
3local tinsert = table.insert
4local tconcat = table.concat
5local
tonumber = tonumber
6local
function
uritoken(uri)
7local ret ={}
8for token in uri:gmatch("
[^/.]+
") do
9tinsert(ret,token)
10end
11return
ret12
end13
14function
_m.new(self,rconfig)
15local tab ={}
16local routemap = require
(rconfig)
17local route_data ={}
18local whitelist =routemap.whitelist
19for i=1,#whitelist do
20local ret =uritoken(whitelist[i])
21if #ret > 0
then
22 tinsert(route_data,tconcat())
23end
24end
25local rewritelist =routemap.rewritelist
26local x = 1
27local rewrite_data ={}
28local rewrite_urls ={}
29for k,v in
pairs(rewritelist) do
30 tinsert(rewrite_data,tconcat())
31tinsert(rewrite_urls,v)
32 x = x + 1
33end
34 tab.rewrite_urls =rewrite_urls
35 tab.rewrite_pattern = tconcat(rewrite_data,'|'
)36 tab.route_pattern = tconcat(route_data,'|'
)37return
setmetatable
(tab, mt)
38end
3940
function
_m.route_verify(self)
41local uri =ngx.var.api_path
42local ret =uritoken(uri)
43 uri = tconcat(ret,'/'
)44 ngx.var.api_path =uri
45local m =ngx.re.match(uri,self.route_pattern)
46if m == nil
then
47 m =ngx.re.match(uri,self.rewrite_pattern)
48if m == nil
then
49 ngx.exit(404)50
else
51local locant = ngx.re.match(next(m,#m), "
^z(\\d+)z")
52 ngx.var.api_path = self.rewrite_urls[tonumber(locant[1
])]53
end54
end55
end56
return
_m
關於杯子量水的一種演算法
題目 有兩個水罐a,b,容量分別為x,y,均為不小於1的整數,在沒有任何刻度記號的下,可以量出那些數量單位的水 輸入示例 4 3輸出示例 1 2 3 4 5 6 7 輸入示例2 1 2輸出示例2 1 2 3 演算法 以乙個5公升乙個6公升杯子倒3公升水為例,這兩個杯子根據裝的水量不同,共有22種狀態...
一種理想的大資料量分頁查詢方案
本文旨在介紹一種對資料庫中的大資料量 進行分頁查詢的實現方法,該方法對應用伺服器 資料庫伺服器 查詢客戶端的cpu和記憶體占用都較低,查詢速度較快,是乙個較為理想的分頁查詢實現方案。1 問題的提出 在軟體開發中,大資料量的查詢是乙個常見的問題,經常會遇到對大量資料進行查詢的場景。常見的對大資料量查詢...
Nancy總結(一)Nancy乙個輕量的MVC框架
nancy是乙個基於.net 和mono 構建的http服務框架,是乙個非常輕量級的web框架。nancy 的特點 1.建立了自下而上的,而不是簡單地dsl的現有框架。刪除很多不必要的限制和特性,盡可能的只引用你需要的元件。使其保持簡單。2.隨處執行。nancy不是建立在任何特定的平台下的的,它可以...