docs(changelog): 添加项目变更日志文档 新增完整的CHANGELOG.md文件,包含: - 项目变更历史记录格式规范 - 0.1.0版本的详细功能列表 - 技术架构和配置示例 - 已知限制和未来计划 - 版本发布策略和分支管理说明 ``` |
||
|---|---|---|
| doc | ||
| public | ||
| src | ||
| static | ||
| tests | ||
| .gitignore | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
| config.js | ||
| config.toml | ||
README.md
rhttpd - Rust HTTP Server
一个高性能、可配置的HTTP服务器,用Rust编写,支持多站点托管、多种代理类型和JavaScript动态配置。
功能特性
✅ 已实现
- 多站点支持 - 在单个端口上服务多个独立站点
- 基于Host头的路由 - 根据HTTP Host头部进行站点路由
- 静态文件服务 - 支持MIME类型自动识别和索引文件
- 反向代理 - 代理到后端HTTP服务
- 配置系统 - 支持TOML和JSON格式
- 日志记录 - 使用tracing框架
🚧 开发中
- TCP代理
- 连接池和超时控制
- JavaScript配置引擎
📋 计划中
- 正向代理
- SSL/TLS支持
- 负载均衡
- WebSocket支持
快速开始
安装
git clone https://github.com/yourusername/rhttpd.git
cd rhttpd
cargo build --release
配置
创建配置文件 config.toml:
port = 8080
[sites]
[sites."example.com"]
hostname = "example.com"
[[sites."example.com".routes]]
type = "static"
path_pattern = "/*"
root = "./public"
index = ["index.html"]
[[sites."example.com".routes]]
type = "reverse_proxy"
path_pattern = "/api/*"
target = "http://localhost:3000"
运行
# 使用默认配置
cargo run
# 使用指定配置文件
cargo run -- config.toml
配置参考
服务器配置
| 字段 | 类型 | 描述 |
|---|---|---|
port |
u16 |
监听端口 |
sites |
HashMap<String, SiteConfig> |
站点配置映射 |
js_config |
Option<String> |
JavaScript配置文件路径 |
站点配置
| 字段 | 类型 | 描述 |
|---|---|---|
hostname |
String |
站点主机名 |
routes |
Vec<RouteRule> |
路由规则列表 |
tls |
Option<TlsConfig> |
TLS配置 |
路由规则
静态文件
type = "static"
path_pattern = "/*"
root = "./public"
index = ["index.html", "index.htm"]
directory_listing = false
反向代理
type = "reverse_proxy"
path_pattern = "/api/*"
target = "http://backend:3000"
TCP代理
type = "tcp_proxy"
path_pattern = "/ws/*"
target = "ws://chat-server:8080"
protocol = "websocket"
开发
构建和测试
# 构建
cargo build
# 测试
cargo test
# 运行单个测试
cargo test test_name
# 代码检查
cargo clippy
# 代码格式化
cargo fmt
# 文档生成
cargo doc --open
项目结构
rhttpd/
├── src/
│ ├── main.rs # 应用程序入口
│ ├── lib.rs # 库根
│ ├── config/ # 配置管理
│ ├── server/ # 服务器实现
│ ├── proxy/ # 代理功能
│ └── js_engine/ # JavaScript集成
├── tests/ # 集成测试
├── doc/ # 文档
├── public/ # 静态文件示例
├── static/ # 静态文件示例
├── config.toml # 配置示例
└── AGENTS.md # 开发者指南
示例
基本静态网站
port = 8080
[sites."mysite.com"]
hostname = "mysite.com"
[[sites."mysite.com".routes]]
type = "static"
path_pattern = "/*"
root = "./www"
index = ["index.html"]
API服务器代理
[sites."api.example.com"]
hostname = "api.example.com"
[[sites."api.example.com".routes]]
type = "reverse_proxy"
path_pattern = "/*"
target = "http://localhost:3001"
混合配置
[sites."example.com"]
[[sites."example.com".routes]]
type = "static"
path_pattern = "/static/*"
root = "./assets"
[[sites."example.com".routes]]
type = "static"
path_pattern = "/"
root = "./public"
index = ["index.html"]
[[sites."example.com".routes]]
type = "reverse_proxy"
path_pattern = "/api/*"
target = "http://backend:3000"
贡献
欢迎贡献代码!请查看 AGENTS.md 了解开发指南。
许可证
MIT License
性能
rhttpd基于以下高性能Rust库构建:
tokio- 异步运行时axum- HTTP框架hyper- HTTP实现reqwest- HTTP客户端
支持
如有问题或建议,请提交Issue或Pull Request。