An extensible and efficient forward-thinking web server for the future.
Kvarn is a rethought web server tailored for the current needs from web application developers.
It handles several things for you, including
- Compression of body
- Correct and performant HTTP/1 and HTTP/2
- Common API across HTTP/1 and HTTP/2
- Easy integration with HTTP/2 push promises
- Five types of extensions, all backed with intuitive macros
- Optional encryption with
- Several checks for illegal requests
kvarn-cache-controlheader limits server cache lifetimes
A battle-tested reference implementation can be found at GitHub. It powers my two websites with minimal resource requirements.
pub use error::default as default_error;
pub use error::default_response as default_error_response;
pub use extensions::Extensions;
pub use extensions::Id;
pub use read::file as read_file;
pub use read::file_cached as read_file_cached;
Abstractions for the application layer, providing a common interface for all HTTP versions supported.
Compress and cache.
Control the Kvarn server from the outside.
Encryption for incoming and outgoing traffic, implemented through streams.
Utility functions to generate error responses.
Here, all extensions code is housed.
Limits traffic from a IP address to partially mitigate attacks.
The Kvarn Prelude
Graceful shutdown for Kvarn.
Vary header handling in Kvarn.
Easy and fast WebSockets for Kvarn.
The ultimate extension-creation macro.
Describes port, certificate, and host data for a single port to bind.
How to send data to the client.
Can also be used for identifying the client when using
Kvarn as a reverse-proxy.
Will handle a single request, check the cache, process if needed, and caches it. This is where the response is sent.
Handles a single connection. This includes encrypting it, extracting the HTTP header information,
optionally (HTTP/2 & HTTP/3) decompressing them, and passing the request to
It will also recognize which host should handle the connection.
Handles a single request and returns response with cache and compress preference.
Request used within Kvarn.