docs(plan): 更新计划,标记 HTTP/2 代理完成,新增连接池 HTTP/1.0 兼容待办

This commit is contained in:
xfy911 2026-06-09 09:39:56 +08:00
parent 7fe52a3b6e
commit 25a0b100c1

View File

@ -64,13 +64,33 @@
- 当前仅做编译和测试验证,不添加新代码 - 当前仅做编译和测试验证,不添加新代码
## 待办池(活跃) ## 待办池(活跃)
1. ~~平滑加权轮询负载均衡~~ ✅ 2026-06-09 1. ~~HTTP/2 代理支持~~ ✅ 2026-06-09
2. **HTTP/2 代理支持** — 将反向代理接入 HTTP/2 流(当前仅 HTTP/1.1 - HTTP/2 流通过 nghttp2 转发到 HTTP/1.1 后端
3. 虚拟主机 / 多站点 — 低优先级 - GET 请求测试通过POST 基础支持
4. 主动健康检查 — 后台线程定期探测后端(当前为被动式) - 已知限制:连接池对 HTTP/1.0 后端(无 keep-alive处理需完善
2. **连接池 HTTP/1.0 兼容** — 后端发送 Connection: close 时正确关闭连接而非归还
3. **HTTP/2 代理流式转发** — 当前为非流式(先收集完整响应),未来改为流式
4. 虚拟主机 / 多站点 — 低优先级
5. 主动健康检查 — 后台线程定期探测后端(当前为被动式)
## 最近行动记录 ## 最近行动记录
- 2026-06-09 09:00: **HTTP/2 反向代理支持**
- `http2.h`: `http2_session_t` 新增 `proxy_config``client_addr` 字段
- `http2.c`: 新增 `http2_session_set_proxy_config()` 注入代理配置
- `http2.c`: 新增 `http2_serve_proxy()` 函数,实现 HTTP/2 流 → HTTP/1.1 后端转发
- 请求重组:将 HTTP/2 伪头(:method, :path, :authority重组为 HTTP/1.1 请求
- 后端响应解析:解析 HTTP/1.1 响应头,通过 nghttp2 提交 HTTP/2 响应帧
- 过滤 hop-by-hop 头Connection, Transfer-Encoding 等)
- 添加 X-Forwarded-For 头
- 支持 TLS 和非 TLS 后端连接(通过 `proxy_tls.c`
- `server.c`: `handle_http2()` 中调用 `http2_session_set_proxy_config()` 注入配置
- `http2.c`: 修复 `parse_http1_response()``body_len` 下溢问题(当 `len < blank + 4 - data` 时)
- `tests/integration_test.sh`: 新增 HTTP/2 代理集成测试GET 请求验证)
- 编译零警告142 单元测试全部通过
- 集成测试HTTP/2 GET 代理测试通过POST 待完善(连接池 HTTP/1.0 兼容问题)
- 提交已推送 `main` (7fe52a3)
- 2026-06-09 06:00: **平滑加权轮询负载均衡** - 2026-06-09 06:00: **平滑加权轮询负载均衡**
- `proxy.h`: 后端结构添加 `weight`(配置权重)和 `current_weight`(动态权重)字段 - `proxy.h`: 后端结构添加 `weight`(配置权重)和 `current_weight`(动态权重)字段
- `proxy.c`: 实现平滑加权轮询算法Nginx SWW`select_backend_sww()` + `select_backend_sww_all()` - `proxy.c`: 实现平滑加权轮询算法Nginx SWW`select_backend_sww()` + `select_backend_sww_all()`