Static Web Server (or SWS
abbreviated) is a tiny and fast production-ready web server suitable to serve static web files or assets.
It is focused on lightness and easy-to-use principles while keeping high performance and safety powered by The Rust Programming Language.
Written on top of Hyper and Tokio runtime, it provides concurrent and asynchronous networking abilities and the latest HTTP/1 - HTTP/2 implementations.
Cross-platform and available for Linux
, macOS
, Windows
, FreeBSD
, NetBSD
, Android
, Docker
and Wasm
(via Wasmer).
- Built with Rust, which focuses on safety, speed and concurrency.
- Memory-safe and significantly reduced CPU and RAM overhead.
- Blazing fast static files-serving and asynchronous powered by the latest Hyper, Tokio and a set of awesome crates.
- Single 4MB (uncompressed) and fully static binary with no dependencies (Musl libc). Suitable for running on any Linux distro or Docker container.
- Optional GZip, Deflate, Brotli or Zstandard (zstd) compression for text-based web files only.
- Compression on-demand via Accept-Encoding header.
- Partial Content Delivery support for byte-serving of large files.
- Optional Cache-Control headers for assets.
- Termination signal handling with graceful shutdown ability and grace period.
- HTTP/2 and TLS support.
- Security headers for HTTP/2 by default.
- HEAD and OPTIONS responses.
- Lightweight and configurable logging via tracing crate.
- Customizable number of blocking and worker threads.
- Optional directory listing with sorting and JSON output format support.
- CORS with preflight requests support.
- Basic HTTP Authentication.
- Customizable HTTP response headers for specific file requests via glob patterns.
- Fallback pages for 404 errors, useful for Single-page applications.
- Run the server as a Windows Service.
- Configurable using CLI arguments, environment variables or a TOML file.
- Default and custom error pages.
- Built-in HTTP to HTTPS redirect.
- GET/HEAD Health check endpoint.
- Support for serving pre-compressed (Gzip/Brotli/Zstd) files directly from disk.
- Custom URL rewrites and redirects via glob patterns with replacements.
- Virtual hosting support.
- Multiple index files.
- Maintenance Mode functionality.
- Available as a library crate with opt-in features.
- First-class Docker support. Scratch, latest Alpine Linux and Debian Docker images.
- Ability to accept a socket listener as a file descriptor for sandboxing and on-demand applications (e.g. systemd).
- Cross-platform. Pre-compiled binaries for Linux, macOS, Windows, FreeBSD, NetBSD, Android (
x86/x86_64
,ARM/ARM64
) and WebAssembly (via Wasmer).
Please refer to The Documentation Website for more details about the API, usage and examples.
For more details see benchmarks repository
- If you're looking for
v1
please go to 1.x branch. - If you want to migrate from
v1
tov2
please view Migrating fromv1
tov2
release.
Unless you explicitly state otherwise, any contribution you intentionally submitted for inclusion in current work, as defined in the Apache-2.0 license, shall be dual licensed as described below, without any additional terms or conditions.
Feel free to submit a pull request or file an issue.
This work is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).
© 2019-present Jose Quintana