或GeoIP2 City(商业)数据库加载位置信息。
您可以在微服务架构中使用此项目,当多个服务需要请求地理位置数据时尤为适用。该服务可与Logstash http过滤器插件配合使用,以丰富日志数据。
Docker Hub上提供的Docker镜像捆绑了最新的GeoLite2城市数据库。容器每周构建一次,包含最新版本的数据库。
$ docker run -p 8080:8080 ghcr.io/observabilitystack/geoip-api:latest
$ docker run -p 8080:8080 observabilitystack/geoip-api:latest
💡 尽管在生产环境中不推荐使用
latest标签运行容器,但对于geoip-api,我们强烈建议使用latest以获取最新的地理位置数据。
yyyy-VV(年份和周数)。latest。amd64和arm64架构。☝️ 在生产环境中,强烈建议使用商业版Maxmind GeoIP2 City数据库,因其具有更高的精度和数据质量。
您可以将mmdb格式的数据库挂载到容器中。数据库位置可通过以下变量自定义:
| 变量名 | 描述 | 默认值 |
|---|---|---|
| CITY_DB_FILE | GeoIP2 City或GeoLite2数据库文件路径 | /srv/GeoLite2-City.mmdb |
| ASN_DB_FILE | GeoIP2 ASN数据库文件路径 | /srv/GeoLite2-ASN.mmdb |
| ISP_DB_FILE | GeoIP2 ISP数据库文件路径 | (无) |
examples文件夹包含在Docker-Compose或Kubernetes中运行geoip-api的示例。
查询API的推荐方式是通过简单的HTTP GET请求。将待解析的IP地址作为路径参数提供。
bash$ curl -s http://localhost:8080/8.8.8.8 { "country": "US", "latitude": "37.751", "longitude": "-97.822", "continent": "NA", "timezone": "America/Chicago", "accuracyRadius": 1000, "asn": ***, "asnOrganization": "GOOGLE", "asnNetwork": "8.8.8.0/24" } $ curl -s "http://localhost:8080/$(curl -s [***]" { "country": "DE", "stateprov": "Free and Hanseatic City of Hamburg", "stateprovCode": "HH", "city": "Hamburg", "latitude": "53.5742", "longitude": "10.0497", "continent": "EU", "timezone": "Europe/Berlin", "asn": ***, "asnOrganization": "wilhelm.tel GmbH" }
Geoip-API在Link头中返回指向详细滥用和RIPE信息的链接。ripe-asn信息可直接获取。abuse链接需要注册并获取API密钥才能访问。
bashcurl "http://localhost:8080/$(curl -s [***]" HTTP/1.1 200 Link: <[***]>; rel="abuse", <[***]>; rel="ripe-asn" { "country": "DE", "stateprov": "Land Berlin", "stateprovCode": "BE", "city": "Berlin", "latitude": "52.5196", "longitude": "13.4069", "continent": "EU", "timezone": "Europe/Berlin", "accuracyRadius": 200, "asn": 8881, "asnOrganization": "1&1 Versatel Deutschland GmbH", "asnNetwork": "104.151.0.0/17" }
X-Geoip-Address头是查询API的另一种方式(如Nginx-Geoip示例中使用)。在此方式中,待解析的地址作为头值提供,地理位置信息也通过头值返回,返回码始终为204。
bash$ curl -sI -H "X-Geoip-Address: $(curl -s [***]" "http://localhost:8080/" HTTP/1.1 204 X-Geoip-Country: DE X-Geoip-StateProv: Free and Hanseatic City of Hamburg X-Geoip-City: Hamburg X-Geoip-Latitude: 53.6042 X-Geoip-Longitude: 10.0596 X-Geoip-Continent: EU X-Geoip-Timezone: Europe/Berlin
bashcurl --location 'http://localhost:8080/' \ --header 'Content-Type: application/json' \ --data '[ "8.8.8.8", "8.8.4.4" ]' { "8.8.4.4": { "country":"US", "latitude":"37.751", "longitude":"-97.822", "continent":"NA", "timezone":"America/Chicago", "accuracyRadius":1000, "asn":***, "asnOrganization":"GOOGLE", "asnNetwork":"8.8.4.0/24" }, "8.8.8.8": { "country":"US", "latitude":"37.751", "longitude":"-97.822", "continent":"NA", "timezone":"America/Chicago", "accuracyRadius":1000, "asn":***, "asnOrganization":"GOOGLE", "asnNetwork":"8.8.8.0/24" } }
一次最多支持100个地址。
结果为JSON对象,按请求的IP地址索引。
若请求的地址无法解析,响应中将缺少该条目。
项目通过多阶段Docker构建。需要有效的Maxmind许可证密钥以下载Geoip2数据库。
shell$ export MAXMIND_LICENSE_KEY=... $ docker build \ --build-arg MAXMIND_LICENSE_KEY=${MAXMIND_LICENSE_KEY} \ --build-arg VERSION=$(date +%Y-%V) \ -t geoip-api:latest .
若要构建(或测试)多平台镜像,使用Docker Buildx扩展:
shell$ docker buildx create --use --name multi-platform $ docker buildx build \ --platform linux/amd64,linux/arm64 \ --build-arg MAXMIND_LICENSE_KEY=${MAXMIND_LICENSE_KEY} \ -t geoip-api:latest-native -f Dockerfile.native .
我们期待您的评论、问题和拉取请求!
本项目采用Apache License, Version 2许可证。
本产品包含MaxMind创建的GeoLite2数据,可从[***]
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429