基于 ip2region 使用 go 扩展的一个简单的 IP 地址归属地查询服务

Golang
441
0
0
2022-05-20

go-ip2region

基于 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;
}