基於 ip2region 使用 go 擴充套件的一個簡單的 IP 地址歸屬地查詢服務

hezhizheng發表於2021-07-15

基於 ip2region 使用 go 擴充套件的一個簡單的 IP 地址歸屬地查詢服務

github

線上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 協議》,轉載必須註明作者和本文連結
hezhizheng

相關文章