Files
any-hub/specs/002-fiber-single-proxy/quickstart.md
2025-11-14 12:11:44 +08:00

53 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Quickstart: HTTP 服务与单仓代理
## 前置条件
- Go 1.25+,可运行 `go run``go test`
- 访问 Docker Hub 或准备本地 fake upstream见 tests/integration
- 端口 5000 可用。
## 步骤
1. **准备配置**
```bash
cp configs/docker.sample.toml config.toml
```
修改 `[[Hub]]` 中的 `Domain`(例如 `docker.hub.local`),并确保 `/etc/hosts` 映射到 `127.0.0.1`。
2. **启动代理**
```bash
go run ./cmd/any-hub --config ./config.toml
```
终端将打印 `action=startup` 日志。
3. **发起请求并观察路由**
```bash
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`。
4. **验证 Host 未配置时的 404**
```bash
curl -i -H "Host: unknown.hub.local" http://127.0.0.1:5000/v2/
```
代理会返回 `404 {"error":"host_unmapped"}`,日志显示 `action=host_lookup`。
5. **切换 NPM 示例**
```bash
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. **运行路由集成测试**
```bash
go test ./tests/integration -run HostRouting -v
```
7. **使用示例配置快速体验**
```bash
# 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