Zubio
A focused web server, built around the sites I actually run.
Zubio is a Rust experiment in simpler hosting: static sites, application proxying, and PHP, with a careful path from existing Apache and nginx configurations.
MVP in progress
I'm building the first version and testing the foundations. There's working code, but production validation and broader migration support are still ahead. It's early, and I'm curious to see how far this can go.
Why build another web server?
My hosting needs are fairly specific: serve some files, forward requests to running apps, and keep a few PHP workloads working. Zubio starts with those needs and an understandable configuration model. Each feature has to earn its place through a real workload.
The interesting part is the move from what already works. A smaller server becomes much more useful if it can help you understand your current setup and check what would change before switching over.
The foundations so far
These pieces are implemented in the development version. Testing them against real applications is part of the ongoing MVP work.
Static sites over HTTPS
Serve files over HTTP/1.1 and TLS HTTP/2, with virtual hosts, conditional requests, and bounded file streaming.
Application proxying
Forward traffic to HTTP services over TCP or Unix sockets, with connection pooling, streaming, and HTTP/1.1 WebSocket support.
PHP through PHP-FPM
Connect approved, fixed PHP scripts to an existing PHP-FPM runtime over TCP or Unix sockets, with bounded uploads.
Explicit configuration
Validate native TOML configuration before launch, diagnose local setup problems, and manage status and reloads through a private control socket.
Migration is part of the idea
Zubio can inspect Apache and nginx configuration without changing the running setup. Initial conversion covers static files, literal redirects, and fixed-root HTTP proxies. Rules that need review stay visible.
The migration workflow
Inspect
Read existing configuration and report compatibility gaps.
Convert
Generate native configuration for the supported subset.
Compare
Check selected requests against the existing server before considering a cutover.
The comparison tooling checks an explicit set of requests. Broader compatibility and application testing are still needed. More complex sites can stay behind an Apache fallback while that work continues.
Where it could go
The next step is to finish the MVP, expand conversion coverage, and prove the behavior on real workloads. If that holds up, Zubio could become a useful option for people with similar hosting needs. For now, this is the experiment taking shape.
Back to The Lab