Simple HTTP Server is a command-line utility designed to serve directories and files over HTTP. Built with Rust, it offers robust functionality across Windows, Mac, and Linux platforms.
Key Features:
CORS Support: Enables cross-origin resource sharing via configurable headers.
HTTP Basic Authentication: Secures access using username/password credentials.
Partial Content Requests: Handles range requests for efficient file serving.
Index Page Rendering: Automatically generates index pages for directories (e.g., index.html).
File Uploads with CSRF Protection: Allows users to upload files securely when enabled.
Cross-Platform Compatibility: Runs seamlessly on Windows, Mac, and Linux.
Installable via winget: Easily deploy the tool using package managers.
Audience & Benefit:
Ideal for developers and system administrators seeking a lightweight, efficient HTTP server solution. It provides an easy-to-deploy option for hosting static files or websites, with built-in security features like CORS and authentication. The tool's flexibility makes it suitable for both simple file sharing and more complex use cases requiring customization.
Professional, Clear, and Benefit-Focused:
Simple HTTP Server offers a reliable, cross-platform solution for serving content over HTTP, with a focus on security, extensibility, and ease of use.
README
Simple HTTP Server
Simple static file server with directory listing, upload, basic auth, range requests, compression, CORS, SPA fallback, and optional PKCS#12 HTTPS support.
The current implementation is based on axum/tokio. TLS support is behind the tls feature and is disabled by default so the default binary stays smaller.
Screenshot
Installation
Default build:
cargo install simple-http-server
With PKCS#12 HTTPS support:
cargo install simple-http-server --features tls
Usage
Usage: simple-http-server [OPTIONS] [root]
Arguments:
[root] Root directory
Options:
-i, --index Enable automatic render index page [index.html, index.htm]
-u, --upload Enable upload files. (multiple select) (CSRF token required)
--csrf Use a custom CSRF token for upload. WARNING: this is dangerous as the token is passed via the command line and may be visible in process listings
--redirect takes a URL to redirect to using HTTP 301 Moved Permanently
--nosort Disable directory entries sort (by: name, modified, size)
--nocache Disable http cache
--norange Disable header::Range support (partial request)
--cert TLS/SSL certificate (pkcs#12 format, requires tls feature)
--cors Enable CORS via the "Access-Control-Allow-Origin" header
--coop Add "Cross-Origin-Opener-Policy" HTTP header and set it to "same-origin"
--coep Add "Cross-Origin-Embedder-Policy" HTTP header and set it to "require-corp"
--certpass TLS/SSL certificate password (requires tls feature)
-l, --upload-size-limit Upload file size limit [bytes, or K/M/G/T suffix interpreted with powers of 1024, such as 30K, 50M, 1G] [default: 8M]
--ip IP address to bind [default: 0.0.0.0]
-p, --port Port number [default: 8000]
-a, --auth HTTP Basic Auth (username:password)
-c, --compress ... Enable file compression: gzip/deflate
Example: -c=js,d.ts
Note: disabled on partial request!
-t, --threads How many worker threads [default: 3]
--try-file Serve this file in place of missing paths. Relative paths are resolved against the server root; absolute paths are used as-is. [aliases: --try-file-404]
-s, --silent Disable all outputs
-o, --open Open the page in the default browser
-b, --base-url Base URL prefix for directory indexes and upload redirects. It is normalized to start with '/' and to end with '/' when not root. [default: /]
-h, --help Print help
-V, --version Print version