基於 ip2region 使用 go 擴充套件的一個簡單的 IP 地址歸屬地查詢服務
功能
- 提供 http 介面查詢 IP 地址歸屬地
- 提供命令列 下載/更新 最新的
ip2region.db
ip 庫 (資料來源原倉庫)
使用
可直接下載 releases 檔案啟動即可,可選引數說明:
./go-ip2region_windows_amd64.exe -h
Usage of D:\go-ip2region\go-ip2region_windows_amd64.exe:
-d string
僅用於下載最新的ip地址庫,儲存在當前目錄 (default "0")
-p string
本地監聽的埠 (default "9090")
啟動http服務
// 沒有IP地址庫會自動下載,儲存在當前目錄
./go-ip2region_windows_amd64.exe
// 沒有指定IP會獲取當前客戶端IP
curl http://127.0.0.1:9090
curl http://127.0.0.1:9090?ip=59.42.37.186
// 返回資料格式
{
"code": 200,
"msg": "",
"data": {
"ip": "59.42.37.186",
"country": "中國",
"province": "廣東",
"city": "廣州",
"county": "0",
"isp": "電信"
}
}
下載/更新 IP 地址庫
// 僅用於下載/更新 IP 地址庫
./go-ip2region_windows_amd64.exe -d 1
自行編譯
// 跨平臺編譯
gox -osarch="windows/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="darwin/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
gox -osarch="linux/amd64" -ldflags "-s -w" -gcflags="all=-trimpath=${PWD}" -asmflags="all=-trimpath=${PWD}"
部署Nginx
server
{
listen 80;
listen 443 ssl http2;
server_name ip.hzz.cool;
ssl_certificate /path/fullchain.cer;
ssl_certificate_key /path/hzz.cool.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files /_not_exists_ @backend;
}
location @backend {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:9090;
}
access_log /www/wwwlogs/ip2region.log;
error_log /www/wwwlogs/ip2region.error.log;
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結