Sign inSign up

joseluisq/static-web-server

By joseluisq

•Updated 2 months ago

A cross-platform, high performance and asynchronous web server for static files-serving. ⚡

Image
Security
Web servers
25

5M+

joseluisq/static-web-server repository overview

⁠Static Web Server

⁠ A cross-platform, high-performance and asynchronous web server for static files-serving ⚡

View repository⁠ on GitHub.

⁠Overview

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⁠).

static-web-server running

⁠Features

  • 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⁠).

⁠Documentation

Please refer to The Documentation Website⁠ for more details about the API, usage and examples.

⁠Releases

⁠Benchmarks

For more details see benchmarks repository⁠

⁠Notes

⁠Contributions

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⁠.

⁠License

This work is primarily distributed under the terms of both the MIT license⁠ and the Apache License (Version 2.0)⁠.

© 2019-present Jose Quintana⁠

Tag summary

Content type

Image

Digest

sha256:2c1a7c3e0…

Size

3.6 MB

Last updated

2 months ago

docker pull joseluisq/static-web-server