Files
2025-11-14 12:11:44 +08:00

1.9 KiB
Raw Permalink Blame History

Quickstart: HTTP 服务与单仓代理

前置条件

  • Go 1.25+,可运行 go rungo test
  • 访问 Docker Hub 或准备本地 fake upstream见 tests/integration
  • 端口 5000 可用。

步骤

  1. 准备配置
    cp configs/docker.sample.toml config.toml
    
    修改 [[Hub]] 中的 Domain(例如 docker.hub.local),并确保 /etc/hosts 映射到 127.0.0.1
  2. 启动代理
    go run ./cmd/any-hub --config ./config.toml
    
    终端将打印 action=startup 日志。
  3. 发起请求并观察路由
    curl -H "Host: docker.hub.local" http://127.0.0.1:5000/v2/
    
    响应中会包含 X-Any-Hub-UpstreamX-Any-Hub-Cache-Hit: falseX-Request-ID,日志记录 action=proxyhub=dockerupstream_status=200
  4. 验证 Host 未配置时的 404
    curl -i -H "Host: unknown.hub.local" http://127.0.0.1:5000/v2/
    
    代理会返回 404 {"error":"host_unmapped"},日志显示 action=host_lookup
  5. 切换 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
    
  6. 运行路由集成测试
    go test ./tests/integration -run HostRouting -v
    
  7. 使用示例配置快速体验
    # Docker Hub 示例
    ./scripts/demo-proxy.sh docker
    
    # NPM 示例 (监听 5001)
    ./scripts/demo-proxy.sh npm
    
    脚本会直接引用 configs/docker.sample.toml / configs/npm.sample.toml 并启动代理,确保对应域名已指向本机。

故障排查

  • host_unmapped: 检查 Host 头与 config.toml 中 Domain 是否一致。
  • cache_write_failed: 确认 StoragePath 可写,并有足够磁盘空间。
  • 上游 401/403: 公共仓库可能需要额外匿名访问 header可在配置中新增自定义 headerfuture work