1.9 KiB
1.9 KiB
Quickstart: HTTP 服务与单仓代理
前置条件
- Go 1.25+,可运行
go run与go test。 - 访问 Docker Hub 或准备本地 fake upstream(见 tests/integration)。
- 端口 5000 可用。
步骤
- 准备配置
修改
cp configs/docker.sample.toml config.toml[[Hub]]中的Domain(例如docker.hub.local),并确保/etc/hosts映射到127.0.0.1。 - 启动代理
终端将打印
go run ./cmd/any-hub --config ./config.tomlaction=startup日志。 - 发起请求并观察路由
响应中会包含
curl -H "Host: docker.hub.local" http://127.0.0.1:5000/v2/X-Any-Hub-Upstream、X-Any-Hub-Cache-Hit: false与X-Request-ID,日志记录action=proxy、hub=docker、upstream_status=200。 - 验证 Host 未配置时的 404
代理会返回
curl -i -H "Host: unknown.hub.local" http://127.0.0.1:5000/v2/404 {"error":"host_unmapped"},日志显示action=host_lookup。 - 切换 NPM 示例
cp configs/npm.sample.toml config.toml npm config set registry http://127.0.0.1:5000 --global npm view lodash --registry http://127.0.0.1:5000 --fetch-timeout=60000 - 运行路由集成测试
go test ./tests/integration -run HostRouting -v - 使用示例配置快速体验
脚本会直接引用
# Docker Hub 示例 ./scripts/demo-proxy.sh docker # NPM 示例 (监听 5001) ./scripts/demo-proxy.sh npmconfigs/docker.sample.toml/configs/npm.sample.toml并启动代理,确保对应域名已指向本机。
故障排查
host_unmapped: 检查 Host 头与config.toml中 Domain 是否一致。cache_write_failed: 确认StoragePath可写,并有足够磁盘空间。- 上游 401/403: 公共仓库可能需要额外匿名访问 header;可在配置中新增自定义 header(future work)。