Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork98
A cross-platform, high-performance and asynchronous web server for static files-serving. ⚡
License
Apache-2.0, MIT licenses found
Licenses found
static-web-server/static-web-server
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
End of Life (2023-01-06): Version1.x is no longer supported. Please follow the instructions to migrate to latest stable version. The v2 has similar/added features as well as performance/security improvements. SeeMigrating from v1 to v2
.
A blazing fast static files-serving web server powered byRust Iron. ⚡
This is the stablev1
. For the latestv2
refer tomaster branch.
Static Web Server is a very small and fast production-ready web server to serving static web files or assets.
- Built withRust which is focused onsafety, speed, and concurrency.
- Memory safe and very reduced CPU and RAM overhead.
- Blazing fast static files-serving thanks toRust Iron andHyper.
- No dependencies. Just a single4MB and fully static binary (Musl libc) which makes it suitable for running onany Linux distro orDocker container.
- Gzip compression on demand viaaccept-encoding header.
- Partial Content Delivery support for byte-serving of large files.
- Cache control headers for assets.
- CORS support.
- HEAD responses support.
- TLS support viaRust Native TLS crate.
- Optional directory listing.
- Lightweight and configurable logging.
- Optional HTTP to HTTPS redirection.
- First-classDocker support.Scratch and latestAlpine Linux Docker images.
- Server configurable via CLI arguments or their equivalent environment variables.
- Cross-platform. Binaries available for Linux, macOS and Windows x86_64/ARM64.
Available for download/install via following methods:
hub.docker.com/r/joseluisq/static-web-server/
github.com/joseluisq/static-web-server/releases.
- x86_64-unknown-linux-gnu (64-bit)
- x86_64-unknown-linux-musl (64-bit)
- aarch64-unknown-linux-musl (ARM64)
- aarch64-unknown-linux-gnu (ARM64)
- arm-unknown-linux-gnueabihf (ARM)
- x86_64-apple-darwin (64-bit)
- aarch64-apple-darwin (ARM64)
- x86_64-pc-windows-msvc (64-bit)
- aarch64-pc-windows-msvc (ARM64)
Server can be configured either via environment variables or their equivalent command-line arguments.
Variable | Description | Default |
---|---|---|
SERVER_NAME | Name for server. | Defaultmy-static-server . |
SERVER_HOST | Host address (E.g 127.0.0.1). | Default[::] . |
SERVER_PORT | Host port. | Default80 . |
SERVER_ROOT | Root directory path of static files. | Default./public . |
SERVER_ASSETS | Assets directory path for add cache headers functionality. | Default./public/assets . |
SERVER_LOG_LEVEL | Specify a logging level in lower case (seelog::LevelFilter). | Defaulterror |
SERVER_ERROR_PAGE_404 | HTML file path for 404 errors. | If path is not specified or simply don't exists then server will use a generic HTML error message. Default file path./public/404.html . |
SERVER_ERROR_PAGE_50X | HTML file path for 50x errors. | If path is not specified or simply don't exists then server will use a generic HTML error message. Default file path./public/50x.html |
SERVER_TLS | Enables TLS/SSL support. Make sure also to adjust current server port. | Defaultfalse |
SERVER_TLS_PKCS12 | A cryptographic identityPKCS #12 bundle file path containing aX509 certificate along with its corresponding private key and chain of certificates to a trusted root. | Default empty |
SERVER_TLS_PKCS12_PASSWD | A specified password to decrypt the private key. | Default empty |
SERVER_TLS_REDIRECT_FROM | Host port for redirecting HTTP requests to HTTPS. This option enables the HTTP redirect feature | Default empty (disabled) |
SERVER_TLS_REDIRECT_HOST | Host name of HTTPS site for redirecting HTTP requests to. | Default host address |
SERVER_CORS_ALLOW_ORIGINS | Specify a CORS list of allowed origin hosts separated by comas. Host ports or protocols aren't being checked. Use an asterisk (*) to allow any host. SeeIron CORS crate. | Default empty (disabled) |
SERVER_DIRECTORY_LISTING | Enable directory listing for all requests ending with the slash character (‘/’) | Defaultfalse (disabled) |
CLI arguments listed withstatic-web-server -h
.
static-web-server 1.18.1Jose Quintana <https://joseluisq.net>A blazing fast static files-serving web server powered by Rust Iron.USAGE: static-web-server [OPTIONS]FLAGS: -h, --help Prints help information -V, --version Prints version informationOPTIONS: -f, --assets <assets> Assets directory path for add cache headers functionality [env: SERVER_ASSETS=] [default: ./public/assets] -c, --cors-allow-origins <cors-allow-origins> Specify a CORS list of allowed origin hosts separated by comas. Host ports or protocols aren't being checked. Use an asterisk (*) to allow any host [env: SERVER_CORS_ALLOW_ORIGINS=] -i, --directory-listing <directory-listing> Enable directory listing for all requests ending with the slash character (‘/’) [env: SERVER_DIRECTORY_LISTING=] -a, --host <host> Host address (E.g 127.0.0.1) [env: SERVER_HOST=] [default: [::]] -g, --log-level <log-level> Specify a logging level in lower case [env: SERVER_LOG_LEVEL=] [default: error] -l, --name <name> Name for server [env: SERVER_NAME=] --page404 <page404> HTML file path for 404 errors. If path is not specified or simply don't exists then server will use a generic HTML error message [env: SERVER_ERROR_PAGE_404=] [default: ./public/404.html] --page50x <page50x> HTML file path for 50x errors. If path is not specified or simply don't exists then server will use a generic HTML error message [env: SERVER_ERROR_PAGE_50X=] [default: ./public/50x.html] -p, --port <port> Host port [env: SERVER_PORT=] [default: 80] -d, --root <root> Root directory path of static files [env: SERVER_ROOT=] [default: ./public] -t, --tls <tls> Enables TLS/SSL support [env: SERVER_TLS=] --tls-pkcs12 <tls-pkcs12> A cryptographic identity PKCS #12 bundle file path containing a X509 certificate along with its corresponding private key and chain of certificates to a trusted root [env: SERVER_TLS_PKCS12=] --tls-pkcs12-passwd <tls-pkcs12-passwd> A specified password to decrypt the private key [env: SERVER_TLS_PKCS12_PASSWD=] --tls-redirect-from <tls-redirect-from> Host port for redirecting HTTP requests to HTTPS. This option enables the HTTP redirect feature [env: SERVER_TLS_REDIRECT_FROM=] --tls-redirect-host <tls-redirect-host> Host name of HTTPS site for redirecting HTTP requests to. Defaults to host address [env: SERVER_TLS_REDIRECT_HOST=]
TLS/SSL support is provided byRust Native TLS crate which supportsPKCS #12 cryptographic identity.An identity is anX509 certificate certificate along with its corresponding private key and chain of certificates to a trusted root.
For instance, identity files (.p12
or.pfx
) can be generated using theOpenSSL SSL/TLS Toolkit:
Generate a self-signed certificate (optional):
openssl req -x509 -newkey rsa:4096 -nodes -keyout local.key -out local.crt -days 3650
Generate a PKCS #12 indentity file (using an existing certificate and private key):
openssl pkcs12 -export -out identity.p12 -inkey local.key -in local.crt -password pass:my_password
Example usingTraefik Proxy:
version:"3.3"services:web:image:joseluisq/static-web-server:1environment: -SERVER_NAME=my-server -SERVER_HOST=127.0.0.1 -SERVER_PORT=80 -SERVER_ROOT=/public# NOTE:# For the server, assets directory is not relative to root.# That's why, it's necessary to be explicit (prefer absolute paths).# See release v1.8.0+ for more details. -SERVER_ASSETS=/public/assetsvolumes: -./some-dir-path:/publiclabels: -"traefik.enable=true" -"traefik.frontend.entryPoints=https" -"traefik.backend=localhost_dev" -"traefik.frontend.rule=Host:localhost.dev" -"traefik.port=80"networks: -traefik_netnetworks:traefik_net:external:true
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in current work by you, as defined in the Apache-2.0 license, shall be dual licensed as described below, without any additional terms or conditions.
Feel free to send somePull request orissue.
This work is primarily distributed under the terms of both theMIT license and theApache License (Version 2.0).
© 2019-presentJose Quintana
About
A cross-platform, high-performance and asynchronous web server for static files-serving. ⚡
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.