318 lines
7.0 KiB
Markdown
318 lines
7.0 KiB
Markdown
# rhttpd 开发路线图
|
||
|
||
## 项目概述
|
||
|
||
rhttpd 是一个高性能、可配置的HTTP服务器,用Rust编写,支持多站点托管、多种代理类型和JavaScript动态配置。
|
||
|
||
## 当前状态 (v0.1.0)
|
||
|
||
### ✅ 已实现功能
|
||
|
||
#### 🏗️ 基础架构 (Phase 1 - 100% 完成)
|
||
- **项目结构** - 完整的模块化架构
|
||
- `config/` - 配置管理模块
|
||
- `server/` - HTTP服务器实现
|
||
- `proxy/` - 代理功能模块
|
||
- `js_engine/` - JavaScript集成模块
|
||
|
||
- **HTTP服务器框架** - 基于axum的异步服务器
|
||
- 支持多站点托管
|
||
- 基于Host头的路由
|
||
- 请求日志记录
|
||
- 错误处理
|
||
|
||
- **路由系统** - 灵活的路由匹配
|
||
- 基于路径模式匹配 (`/api/*`, `/`, `/*`)
|
||
- 支持多路由规则
|
||
- 按优先级匹配
|
||
|
||
- **静态文件服务** - 完整的静态文件支持
|
||
- 自动MIME类型检测 (使用 `mime_guess`)
|
||
- 索引文件支持 (可配置)
|
||
- 目录访问控制
|
||
- 文件路径安全验证
|
||
|
||
- **配置系统** - 多格式配置支持
|
||
- TOML格式配置 (`config.toml`)
|
||
- JSON格式配置支持
|
||
- 配置文件热重载准备
|
||
- 配置验证机制
|
||
|
||
#### 🌐 代理功能 (Phase 2 - 50% 完成)
|
||
- **反向代理** - 完整实现
|
||
- HTTP请求转发
|
||
- 头部重写和传递
|
||
- 请求/响应体转发
|
||
- 错误处理和超时
|
||
- 后端服务器状态跟踪
|
||
|
||
- **代理管理** - 基础框架
|
||
- 连接计数跟踪
|
||
- 连接清理机制
|
||
- 为连接池和负载均衡做准备
|
||
|
||
#### ⚙️ JavaScript集成 (Phase 3 - 30% 完成)
|
||
- **JavaScript配置基础** - 框架准备
|
||
- JS配置文件解析 (简化版)
|
||
- 与TOML/JSON配置集成
|
||
- 中间件执行框架
|
||
|
||
#### 🛠️ 开发工具
|
||
- **完整的开发环境**
|
||
- 单元测试 (3个测试通过)
|
||
- 集成测试 (2个测试通过)
|
||
- 代码格式化 (`cargo fmt`)
|
||
- 静态检查 (`cargo clippy`)
|
||
- 文档生成
|
||
- **项目文档**
|
||
- README.md - 用户指南
|
||
- AGENTS.md - 开发者指南
|
||
- 配置示例文件
|
||
|
||
---
|
||
|
||
## 🚀 下一阶段计划 (v0.2.0)
|
||
|
||
### Phase 2: 完善代理功能
|
||
|
||
#### 🌊 TCP代理实现
|
||
**优先级: 高**
|
||
- **原始TCP代理**
|
||
- TCP流量转发
|
||
- 连接建立和管理
|
||
- 数据流复制
|
||
- **WebSocket代理**
|
||
- WebSocket握手处理
|
||
- 消息转发
|
||
- 连接状态管理
|
||
- **协议检测**
|
||
- 自动协议识别
|
||
- 基于路径的协议路由
|
||
|
||
**实现细节:**
|
||
```rust
|
||
// 新增路由规则
|
||
enum TcpProxyMode {
|
||
RawTcp,
|
||
WebSocket,
|
||
AutoDetect,
|
||
}
|
||
|
||
// TCP代理实现
|
||
struct TcpProxyHandler {
|
||
target: SocketAddr,
|
||
protocol: ProtocolType,
|
||
connection_pool: Arc<TcpConnectionPool>,
|
||
}
|
||
```
|
||
|
||
#### 🔄 连接池和负载均衡
|
||
**优先级: 高**
|
||
- **连接池管理**
|
||
- HTTP连接复用
|
||
- 连接保活机制
|
||
- 连接数限制
|
||
- 空闲连接清理
|
||
- **负载均衡策略**
|
||
- 轮询 (Round Robin)
|
||
- 最少连接 (Least Connections)
|
||
- IP哈希 (IP Hash)
|
||
- 健康检查集成
|
||
- **后端服务发现**
|
||
- 动态上游服务
|
||
- 服务健康检查
|
||
- 故障转移机制
|
||
|
||
**实现细节:**
|
||
```rust
|
||
// 负载均衡器
|
||
trait LoadBalancer {
|
||
fn select_upstream(&self, upstreams: &[Upstream]) -> Option<&Upstream>;
|
||
}
|
||
|
||
// 连接池
|
||
struct ConnectionPool {
|
||
max_connections: usize,
|
||
idle_timeout: Duration,
|
||
connections: HashMap<String, Vec<PooledConnection>>,
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🔮 未来规划 (v0.3.0 及以后)
|
||
|
||
### Phase 3: 完整JavaScript集成
|
||
|
||
#### 🧙 JavaScript引擎完善
|
||
**优先级: 中**
|
||
- **完整JavaScript运行时**
|
||
- 集成 rquickjs 或 boa_engine
|
||
- ES6+ 语法支持
|
||
- 模块系统支持
|
||
- **JavaScript中间件**
|
||
- 请求/响应拦截
|
||
- 自定义处理逻辑
|
||
- 异步中间件支持
|
||
- **JavaScript API**
|
||
- HTTP请求对象访问
|
||
- 响应对象操作
|
||
- 配置动态修改
|
||
|
||
**实现细节:**
|
||
```javascript
|
||
// JavaScript中间件示例
|
||
export async function middleware(req) {
|
||
// 请求预处理
|
||
if (req.url.startsWith('/api/')) {
|
||
// 添加认证头
|
||
req.headers['Authorization'] = 'Bearer ' + getToken();
|
||
}
|
||
|
||
// 直接响应 (可选)
|
||
if (req.url === '/health') {
|
||
return { status: 200, body: 'OK' };
|
||
}
|
||
|
||
// 继续处理
|
||
return null;
|
||
}
|
||
```
|
||
|
||
### 🛡️ 安全和性能优化
|
||
|
||
#### 🔒 安全功能
|
||
**优先级: 高**
|
||
- **SSL/TLS支持**
|
||
- HTTPS服务
|
||
- 证书管理
|
||
- SNI支持
|
||
- **访问控制**
|
||
- IP白名单/黑名单
|
||
- 基于路径的访问控制
|
||
- 速率限制
|
||
- **认证机制**
|
||
- Basic Auth
|
||
- JWT Token验证
|
||
- OAuth2集成
|
||
|
||
#### ⚡ 性能优化
|
||
**优先级: 中**
|
||
- **缓存机制**
|
||
- 静态文件缓存
|
||
- HTTP响应缓存
|
||
- 缓存策略配置
|
||
- **压缩支持**
|
||
- Gzip/Brotli压缩
|
||
- 内容编码协商
|
||
- **零拷贝优化**
|
||
- 文件传输优化
|
||
- 内存使用优化
|
||
|
||
### 📊 监控和管理
|
||
|
||
#### 📈 监控系统
|
||
**优先级: 中**
|
||
- **指标收集**
|
||
- 请求计数
|
||
- 响应时间统计
|
||
- 错误率监控
|
||
- **健康检查端点**
|
||
- 服务状态
|
||
- 后端健康状态
|
||
- 系统资源使用
|
||
- **日志增强**
|
||
- 结构化日志
|
||
- 日志级别控制
|
||
- 日志轮转
|
||
|
||
#### 🎛️ 管理接口
|
||
**优先级: 低**
|
||
- **RESTful API**
|
||
- 配置热更新
|
||
- 服务状态查询
|
||
- 统计信息获取
|
||
- **Web管理界面**
|
||
- 配置编辑器
|
||
- 实时监控面板
|
||
- 日志查看器
|
||
|
||
---
|
||
|
||
## 📋 实现时间表
|
||
|
||
### Q1 2025 (v0.2.0)
|
||
- [ ] TCP/WebSocket代理 (2-3周)
|
||
- [ ] 连接池实现 (2周)
|
||
- [ ] 负载均衡策略 (1-2周)
|
||
- [ ] 健康检查系统 (1周)
|
||
- [ ] 文档更新和测试 (1周)
|
||
|
||
### Q2 2025 (v0.3.0)
|
||
- [ ] JavaScript引擎集成 (3-4周)
|
||
- [ ] SSL/TLS支持 (2-3周)
|
||
- [ ] 安全功能实现 (2周)
|
||
- [ ] 性能优化 (2周)
|
||
|
||
### Q3 2025 (v0.4.0)
|
||
- [ ] 监控系统 (2-3周)
|
||
- [ ] 管理API (2周)
|
||
- [ ] 缓存和压缩 (2周)
|
||
- [ ] 文档完善 (1周)
|
||
|
||
### Q4 2025 (v1.0.0)
|
||
- [ ] 生产环境优化
|
||
- [ ] 压力测试和基准测试
|
||
- [ ] 最终文档和示例
|
||
- [ ] 发布准备
|
||
|
||
---
|
||
|
||
## 🤝 贡献指南
|
||
|
||
### 开发优先级
|
||
1. **高优先级** - TCP代理、连接池、负载均衡
|
||
2. **中优先级** - JavaScript集成、安全功能、性能优化
|
||
3. **低优先级** - 监控系统、管理界面
|
||
|
||
### 如何贡献
|
||
1. **查看Issues** - 选择适合的任务
|
||
2. **Fork项目** - 创建功能分支
|
||
3. **遵循AGENTS.md** - 按照编码规范开发
|
||
4. **添加测试** - 确保测试覆盖率
|
||
5. **提交PR** - 详细描述变更内容
|
||
|
||
### 技术债务
|
||
- [ ] 完善错误处理机制
|
||
- [ ] 添加更多集成测试
|
||
- [ ] 优化内存使用
|
||
- [ ] 改进日志记录
|
||
- [ ] 添加基准测试
|
||
|
||
---
|
||
|
||
## 🎯 目标
|
||
|
||
### 短期目标 (v0.2.0)
|
||
成为功能完整的HTTP代理服务器,支持多种代理类型和高可用特性。
|
||
|
||
### 中期目标 (v0.3.0)
|
||
实现完整的JavaScript集成和安全功能,支持企业级使用场景。
|
||
|
||
### 长期目标 (v1.0.0)
|
||
成为生产级的高性能HTTP服务器,与Nginx、HAProxy等竞争,具有独特的JavaScript动态配置优势。
|
||
|
||
---
|
||
|
||
## 📊 当前统计数据
|
||
|
||
- **代码行数**: ~800行
|
||
- **测试覆盖率**: 基础功能覆盖
|
||
- **支持协议**: HTTP/1.1
|
||
- **配置格式**: TOML, JSON, JavaScript (基础)
|
||
- **代理类型**: 反向代理
|
||
- **操作系统**: Linux, macOS, Windows
|
||
|
||
---
|
||
|
||
*最后更新: 2025年1月15日* |