Skip to content

Roadmap

免责声明:Sweety 目前仍处于积极开发阶段,尚未经过生产环境验证。 不建议在关键业务场景下直接使用,欢迎在测试/开发环境试用并反馈问题。

当前 Sweety 已覆盖 Nginx 反向代理 + 静态文件的核心功能集,同时兼具 Caddy 的开箱即用体验。本文档跟踪已完成特性、在建工作与后续计划。


已完成

协议

  • HTTP/1.1 + HTTP/2 + HTTP/3(QUIC)同一进程同时监听
  • WebSocket H1 Upgrade(RFC 6455)+ H2 extended CONNECT(RFC 8441)全透传
  • TLS:rustls 纯 Rust,多证书 SNI 自动路由,TLS session cache(65536 entries)
  • ACME HTTP-01 自动证书(Let's Encrypt / ZeroSSL / Buypass / LiteSSL)
  • ACME DNS-01 通配符证书(Cloudflare / 阿里云 / Shell 自定义)
  • ACME 自签名占位启动:证书未就绪时自动生成占位证书,申请成功后热重载,对标 Caddy

请求处理

  • 静态文件:内存 LRU 缓存 + Range + ETag/Last-Modified + try_files + sendfile(2)
  • PHP/FastCGI:Unix Socket / TCP 连接池,fastcgi_cache,正确处理 HTTP/2 Cookie 合并(RFC 7540 §8.1.2.5)
  • 反向代理:轮询 / 加权 / 最少连接 / IP 哈希 + 连接池 + 断路器(三状态机)+ 主动健康检查 + proxy_cache
  • HTTP/2 上游支持(h2c + h2 over TLS)
  • gRPC 代理:application/grpc + gRPC-Web + Trailer 透传
  • auth_request 子请求鉴权
  • Brotli + gzip 双压缩(优先 br)
  • sub_filter 响应体内容替换
  • Expect: 100-continue 正确处理(RFC 7231 §5.1.1)
  • chunked 请求体流式透传(零内存拷贝)
  • proxy_read_timeout 逐包语义(两包间隔超时,等价 Nginx 行为)

路由

  • 虚拟主机:精确 / 通配符 / fallback 兜底
  • Location 四级优先级:= 精确 > ^~ 前缀优先 > ~ 正则 > 普通前缀
  • Rewrite 规则引擎:正则捕获,last / break / redirect / permanent,!-f / !-d 条件

配置易用性(Caddy 风格)

  • preset = "wordpress" — 一行自动展开 WordPress 最优 location 规则
  • preset = "laravel" — 一行自动展开 Laravel 路由规则
  • preset = "static" — 静态站点预设
  • php_fastcgi = "/tmp/php.sock" — 一行代替完整 [sites.fastcgi]
  • acme_email = "you@example.com" — 一行开启 ACME 自动 HTTPS,无需写 [sites.tls]

安全与可靠性

  • 断路器:三状态机(Closed → Open → Half-Open),比 Nginx max_fails 更精确
  • 五维度令牌桶限流:IP / 路径 / IP+路径 / Header / User-Agent
  • HSTS + force_https
  • 304 响应体强制为空(RFC 7230 §3.3)

性能架构

  • SO_REUSEPORT 多核扩展:每 worker 线程独立 bind,内核连接负载均衡
  • H2 per-connection writer loop:HEADERS 优先 + round-robin DATA 调度,消除 head-of-line blocking
  • 静态文件双键缓存(fast path 跳过 canonicalize/stat syscall,热路径零系统调用)

运维

  • 配置热重载:不断开现有连接(等价 nginx -s reload)
  • 访问日志:combined / json / 自定义模板,异步写
  • Admin REST API:健康检查 / 统计 / 节点管理 / 热重载
  • Prometheus /metrics 端点
  • Daemon 模式:start / stop / restart / PID 文件
  • 配置验证:sweety validate(等价 nginx -t)
  • 多格式配置:TOML / JSON / YAML 自动识别

代码质量

  • config/model 拆分为 global.rs / site.rs / tls.rs / location.rs / upstream.rs
  • server/http.rs 拆分为 state.rs / router.rs / http.rs
  • handler/static_file 拆分为 cache.rs / compress.rs / range.rs / path.rs
  • handler/fastcgi 拆分为 proto.rs / response.rs

进行中

项目说明
插件系统完善Rust trait 动态注册,完善 API 文档
全局速率限流当前为单 worker 令牌桶,计划基于 DashMap 实现跨 worker 共享

计划中

高优先级

功能对应 Nginx说明
TCP/UDP 四层代理stream {} 模块纯字节转发,无协议解析,支持数据库/SSH/任意 TCP 代理
mirror 请求镜像mirror 指令流量异步复制到镜像上游(灰度测试 / 影子流量)

中优先级

功能对应 Nginx说明
if 条件块Nginx if配置层条件逻辑(谨慎实现,Nginx if 语义复杂)
geo 模块geo基于 IP 段的变量/路由分发
大文件 Range 分片缓存proxy_cache + slice大文件按 Range 分片缓存,减少上游回源
OpenTelemetry 追踪分布式追踪(Jaeger / Zipkin / OTLP)

低优先级

功能说明
map 变量配置层变量映射
Prometheus 指标主动推送当前仅支持拉取(/metrics
QUIC 0-RTT 支持首请求免握手,注意重放攻击风险
配置 Web UI可选的图形化配置界面

横向对比

项目SweetyNginxCaddyApache
HTTP/3 内置❌ 需重编译❌ 实验模块
ACME 自动证书❌ 需 certbot❌ 需插件
Brotli 压缩✅ 内置❌ 第三方模块✅ mod_brotli
断路器✅ 三状态机⚠️ max_fails 仅计数
WebSocket 代理✅ mod_proxy_wstunnel
gRPC 代理✅(商业版全功能)⚠️ 有限支持
反向代理连接池
静态文件内存缓存✅ OS page cache✅ mod_cache
FastCGI 响应缓存✅ mod_cache_disk
H2 多核扩展✅ SO_REUSEPORT
配置易用性✅ 预设 + 语法糖❌ 纯手写✅ Caddyfile⚠️ 冗长
配置热重载✅ 不断连✅ graceful
if / map 条件⚠️ 有限✅ mod_rewrite
TCP/UDP 四层代理✅ stream
.htaccess 目录级配置
内存安全✅ Rust❌ C✅ Go❌ C
单文件无依赖
生产检验⚠️ 未验证✅ 广泛✅ 广泛✅ 广泛

最后更新:2026-04-03

基于 Apache License 2.0 发布