48 lines
1.5 KiB
Markdown
48 lines
1.5 KiB
Markdown
# xk-hy-forward-go 基类架构
|
|
|
|
## 代码结构
|
|
|
|
```
|
|
xk-hy-forward-go/
|
|
├── main.go # 入口,调用 forward.Run()
|
|
├── go.mod # Go 模块定义
|
|
├── go.sum # 依赖校验
|
|
├── run.bat # Windows 启动脚本
|
|
├── .env.example # 环境变量模板
|
|
└── internal/
|
|
└── forward/
|
|
├── run.go # HTTP 服务器启动
|
|
├── proxy.go # 反向代理逻辑
|
|
├── config.go # 配置加载
|
|
├── env.go # 环境变量解析
|
|
├── headers.go # 请求头白名单过滤
|
|
├── apilog.go # API 请求日志
|
|
├── applog.go # 应用日志
|
|
├── *_test.go # 测试
|
|
└── testweb/ # 测试 Web 资源
|
|
```
|
|
|
|
## 核心模块
|
|
|
|
| 文件 | 职责 |
|
|
|------|------|
|
|
| `run.go` | HTTP 服务器启动,路由注册 |
|
|
| `proxy.go` | 反向代理核心逻辑,请求转发和响应处理 |
|
|
| `config.go` | 配置加载和验证 |
|
|
| `headers.go` | 请求头白名单,只转发允许的头 |
|
|
| `apilog.go` | API 请求日志记录 |
|
|
| `applog.go` | 应用级日志 |
|
|
|
|
## 反向代理流程
|
|
|
|
```mermaid
|
|
graph LR
|
|
REQ[收到请求] --> CHECK{IP 白名单}
|
|
CHECK -->|通过| LOG[记录日志]
|
|
CHECK -->|拒绝| REJECT[返回 403]
|
|
LOG --> FILTER[过滤请求头]
|
|
FILTER --> FORWARD[转发至目标]
|
|
FORWARD --> RESP[接收响应]
|
|
RESP --> RET[返回给调用方]
|
|
```
|