
这是freegeoip软件的源代码镜像,包含Web服务器和Go编程语言包,使任何Web服务器都能通过简单清晰的API支持IP地理位置定位。有关地理位置定位的详细信息,请参见***。
安装Docker
Docker为多种平台提供了安装指南,包括:
在容器中运行API
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参考。
https://godoc.org/github.com/apilayer/freegeoip?status.svg](https://godoc.org/github.com/apilayer/freegeoip) 
http.Handler对象,可添加到任何HTTP服务器以提供与freegeoip.net相同的简化API,还支持自定义HTTP响应格式的接口。下载包:
bashgo get -d github.com/cryptlex/freegeoip/...
安装Web服务器:
bashgo install github.com/cryptlex/freegeoip/cmd/freegeoip
测试覆盖率良好,测试代码可能有助于找到所需功能。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务