We’re excited to introduce the first alpha version of Ferron 3, a new major version of Ferron - a fast, modern, and easily configurable web server with automatic TLS.
Ferron 3 focuses on ease of configuration, ease of troubleshooting (through first-class observability), and high web server performance.
Why Ferron 3?
When we were working on Ferron 2, we have found some issues with it.
First, we have seen the KDL syntax (used by Ferron 2) has limitations, which causes some hostnames to require being quoted in Ferron 2 configurations, like this:
// Hostnames starting with a number need to be quoted, due to constraints of KDL syntax.
"1.example.com" {
// Configuration for "1.example.com" virtual host
}
"192.168.1.1" {
// Configuration for "192.168.1.1" IP virtual host
}Also, we have seen people requesting TCP proxying-related, which would be difficult to implement in Ferron 2, due to its underlying architecture (it’s primarly focused on HTTP serving).
Ferron 3 addresses these issues, by using a new configuration syntax that doesn’t have the limitations and changing the architecture to be protocol-agnostic (we call it “server of servers”).
What’s new?
Ferron 3 introduces a modular, pipeline-based architecture.
Instead of a monolithic request handler, requests are processed through a series of composable stages. This makes the system easier to extend, reason about, and evolve over time.
The core is also designed to be protocol-agnostic, allowing future support beyond HTTP without redesigning the system again.
What works today?
The alpha release focuses on a solid and usable HTTP core:
- High-performance HTTP server
- Reverse proxying
- Static file serving
- Built-in caching (RFC-compliant, with LSCache compatibility)
- Automatic TLS via ACME
- Rate limiting (token bucket)
- Custom error pages
Observability in Ferron 3
Observability is a first-class concern in Ferron 3.
Instead of being bolted on, logging and metrics are built around a structured event system:
- Structured access logs (JSON and text)
- Pluggable observability backends
- Extensible formatting via a visitor pattern
This makes it easier to integrate with modern logging and monitoring systems.
Validation
In early testing, Ferron 3 has already shown promising results.
For example, when used as a caching reverse proxy in front of a Joomla site (with LSCache-compatible cache), throughput increased significantly compared to serving directly from Apache, with lower latency as well.
These results are preliminary, but they validate the direction of the design.
What’s not included (yet)?
This alpha focuses on a coherent HTTP feature set. Some planned features are intentionally not included yet:
- Advanced configuration directives (e.g. map)
- TCP/stream proxying
- FastCGI (for PHP-FPM support)
- HTTP/3 and QUIC
These will be explored in future releases.
Try Ferron 3
If you’re interested in trying Ferron 3:
- Test it in your own setup
- Experiment with caching and proxying
- Share feedback, bugs, or ideas
GitHub: https://github.com/ferronweb/ferron/tree/3.x
Documentation: https://ferron.sh/docs/v3
Early feedback will help shape the direction of the project.