
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是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参考。
![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
测试覆盖率良好,测试代码可能有助于找到所需功能。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务