用 eBPF 当配置文件的 Web 服务器,单核干翻 Nginx"配置文件?我们不搞那一套"

在Web服务器的世界里,Nginx给你location块和rewrite规则,Caddy给你插件系统——而Zeroserve说:配置文件是个伪命题,eBPF程序就是配置

这个项目的核心设计赌注是:现有Web服务器的配置语言(location块、try_files、map指令)本质上是在"声明式语言里偷偷长出了控制流",然后你还需要在旁边挂一个脚本运行时(Lua、Caddy插件)——行为被割裂在两个层级,开发者得在脑子里同时维护两套逻辑。

Zeroserve的方案:没有配置文件,eBPF程序就是一切。一个沙盒化的eBPF程序看到每个请求,决定路由、认证、限流、代理——全在一个程序里,从头读到尾。

性能:单核超Nginx

据作者测试,Zeroserve在单核上大部分工作负载击败Nginx——包括大小静态文件、脚本中间件、小响应代理,全部走HTTPS。

核心技术栈:

  • io_uring贯穿始终——所有网络和磁盘操作
  • eBPF用户态沙盒——JIT编译到原生代码,每个请求运行
  • TLS 1.3 + HTTP/2 + ECH——现代安全标准开箱即用
  • 一个tarball搞定——整个网站打包成一个tar文件,SIGHUP热重载
什么时候该用?

说实话,Zeroserve目前更适合技术尝鲜和特定场景(API网关、静态站+轻量中间件)。但它的设计理念值得关注:当eBPF从内核态走向用户态,"可编程基础设施"的门槛正在被大幅降低。

一个tar文件 + 一段eBPF代码 = 完整的HTTPS站点。这种极简运维体验,确实让人心动。

> 来源:su3.io/posts/introducing-zeroserve