这是freegeoip软件的源代码镜像,包含Web服务器和Go编程语言包,使任何Web服务器都能通过简单清晰的API支持IP地理位置定位。有关地理位置定位的详细信息,请参见***。
Docker为多种平台提供了安装指南,包括:
bashdocker run --restart=always -p 8080:8080 -d cryptlex/freegeoip
bashcurl localhost:8080/json/1.2.3.4 # => {"ip":"1.2.3.4","country_code":"US","country_name":"United States", # ...(省略部分响应内容)
对于生产工作负载,您可能需要不同的配置,例如:
有关服务器配置的更多信息,请参见下面的服务器选项部分。
自动化部署可参考freegeoip chef cookbook或适用于Ubuntu 14.04 LTS的(旧版)Ansible Playbook。
要查看所有可用选项,请使用-help选项:
bashdocker run --rm -it cryptlex/freegeoip -help
如果使用LetsEncrypt.org provision TLS证书,必须在443端口监听HTTPS。以下示例展示服务器监听3个不同端口:指标+性能分析(8888)、HTTP(80)和HTTPS(443):
bashdocker run -p 8888:8888 -p 80:8080 -p 443:8443 -d cryptlex/freegeoip \ -internal-server=:8888 \ -http=:8080 \ -https=:8443 \ -hsts=max-age=31536000 \ -letsencrypt \ -letsencrypt-hosts=myfancydomain.io
您可以通过命令行标志或环境变量配置freegeoip Web服务器。环境变量名称与命令行标志相同,但前缀为FREEGEOIP,全大写,用下划线分隔。例如,使用环境变量配置:
bash$ cat prod.env FREEGEOIP_INTERNAL_SERVER=:8888 FREEGEOIP_HTTP=:8080 FREEGEOIP_HTTPS=:8443 FREEGEOIP_HSTS=max-age=31536000 FREEGEOIP_LETSENCRYPT=true FREEGEOIP_LETSENCRYPT_HOSTS=myfancydomain.io $ docker run --env-file=prod.env -p 8888:8888 -p 80:8080 -p 443:8443 -d cryptlex/freegeoip
默认情况下,HTTPS上启用HTTP/2,可通过-http2=false标志禁用。
此外,freegeoip Docker镜像不提供freegeoip.net的网页,仅提供API。如需提供网页,可在命令行中传递-public=/var/www参数,并使用Docker的-v参数将该目录挂载为主机卷以提供自定义页面。
如果freegeoip Web服务器在反向代理或负载均衡器后运行,需传递-use-x-forwarded-for参数,并在所有请求中提供X-Forwarded-For HTTP头,以便服务器记录客户端IP并在未提供IP时(如/json/)执行地理位置查询。
当前实现使用MaxMind的免费GeoLite2 City数据库。
过去曾使用其他提供商的数据库,甚至自建数据库(整合不同来源数据),未来可能会变更。
如果已购买MaxMind商业数据库,可将freegeoip Web服务器(或Go API开发)指向数据库文件URL或本地文件,服务器将自动使用该数据库。
对于磁盘文件,替换为新版本后,freegeoip Web服务器将在后台自动重新加载。若使用URL(默认),服务器会在后台定期检查URL是否有新版本,如有则自动下载并重新加载。
freegeoip API的所有响应均在X-Database-Date HTTP头中包含数据库下载日期。
freegeoip API通过不同端点提供多种格式的响应。
示例:
bashcurl freegeoip.net/json/
返回您自己IP地址(连接的源IP地址)的地理位置信息。
可传递不同IP或主机名。例如,查询github.com的地理位置,服务器会先解析域名,然后使用第一个可用IP地址(可能是IPv4或IPv6):
bashcurl freegeoip.net/json/github.com
/xml/{ip}和/csv/{ip}端点具有相同语义。
JSON响应可通过添加callback参数编码为JSONP:
bashcurl freegeoip.net/json/?callback=foobar
其他端点忽略callback参数。
freegeoip Web服务器可提供使用指标,并支持运行时性能分析和跟踪。
默认情况下两者均禁用,可通过命令行传递-internal-server参数启用。指标为Prometheus生成,可通过/metrics端点查询(即使使用curl)。
HTTP pprof可在/debug/pprof访问,pprof包文档中的示例适用于freegeoip Web服务器。
Go编程语言的freegeoip包提供两个API:
http.Handler:可用于任何http服务器如需快速查看代码,请参见example_test.go文件。否则,请查看godoc参考。
![GoDoc]([] ![Build Status]([] ![GoReportCard]([***]
http.Handler对象,可添加到任何HTTP服务器以提供与freegeoip.net相同的简化API,还支持自定义HTTP响应格式的接口。下载包:
bashgo get -d github.com/cryptlex/freegeoip/...
安装Web服务器:
bashgo install github.com/cryptlex/freegeoip/cmd/freegeoip
测试覆盖率良好,测试代码可能有助于找到所需功能。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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