lua如何將使用者ip轉為地理位置資訊

2021-10-10 04:35:23 字數 1610 閱讀 8968

有三種方法:

第1種:使用**或者其他ip轉換位址,可以轉換,

準確,但是請求頻率限制了。

第2種:使用lua讀取本地檔案ip庫,這種需要使用二叉樹演算法讀取檔案,獲取位置。

速度會有些慢,對伺服器壓力大,準確。

第3中: 使用第三方ip轉換庫

ip2region 的git位址

ip2region 這個庫暫時不相容nginx-lua版本的解析,但是可以單獨使用lua解析位置,需要引入bit32模組,這個是lua-5.2之後才支援,nginx-lua有預設的低版本的lua,暫時無法公升級版本。 這種方法速度快,頻率低。中國的

maxminddb 這個庫是外國的第三方ip庫,有收費版本和免費版本的庫,免費版本ip解析不太準確,速度快。步驟稍麻煩

maxminddb 介紹位址

maxminddb相容nginx-lua方法

庫的位址

提取碼:238f

5.將解析庫 geolite2-city-放到自己的lualib目錄中,將maxminddb.lua檔案上傳道lualib/resty中,後面需要引入這兩個檔案,所以許可權要給夠。

6.libmaxminddb-1.4.3解壓後,進入

cd libmaxminddb-1.3.2

./configure

make

make check

make install

ldconfig

預設情況下上述操作會將libmaxminddb.so部署到/usr/local/lib目錄下,為了讓openresty訪問,可以拷貝到openresty目錄下,或通過如下步驟更新ldconfig。

sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf"

ldconfig

7.編寫lua**進行訪問

8. 訪問

lua**
local args = ngx.req.get_uri_args();

local cjson = require 'cjson'

local geo = require 'resty.maxminddb'

if not geo.initted() then geo.init("/www/server/nginx/lualib/geolite2-city.mmdb")

endlocal res,err = geo.lookup(args["ip"])

if not res then

ngx.log(ngx.err,'failed to lookup by ip ,reason:',err)

end

ngx.say("full :",cjson.encode(res))

if ngx.var.arg_node then

ngx.say("node name:",ngx.var.arg_node," ,value:", cjson.encode(res[ngx.var.arg_node] or {}))

end

通過IP位址獲取地理位置資訊

本方法通過 的乙個開源服務實現的,如下 通過ip位址獲取地理位置資訊 ip server remote addr echo ip ip url ip json decode file get contents url echo var dump ip echo if string ip code 1...

Linux下顯示IP地理位置資訊的工具 nali

一 簡介 nali,名字取自中文 的拼音。nali包含一組命令列程式,其主要功能就是把一些網路工具的輸出的ip字串,附加上地理位置資訊 使用純真資料庫qqwry.dat 例如74.125.128.104會變成74.125.128.104 美國 加利福尼亞州山景市谷歌公司 查詢是在本地進行,並不會進行...

如何獲取微信好友的地理位置資訊

這是我們曾經碰到的三個真實場景。2.選擇自己隱私選項,對方資訊獲取選項,填寫信件內容,選擇漂流瓶有效時間。3.提交訂單,確認付款 4.支付成功後,將收到方倍工作室發來的漂流瓶鏈結位址。5.開啟位址,將彈出是否允許公眾賬號獲得位址。6.只有 允許 後才能開啟漂流瓶,檢視到信件內容。以下是顯示和不顯示自...