Command line utility to serve directories and files, very extensible
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
How it looks like?
Screenshot
Command Line Arguments
Simple HTTP(s) Server 0.6.3
USAGE:
simple-http-server [FLAGS] [OPTIONS] [--] [root]
FLAGS:
--coep Add "Cross-Origin-Embedder-Policy" HTTP header and set it to "require-corp"
--coop Add "Cross-Origin-Opener-Policy" HTTP header and set it to "same-origin"
--cors Enable CORS via the "Access-Control-Allow-Origin" header
-h, --help Prints help information
-i, --index Enable automatic render index page [index.html, index.htm]
--nocache Disable http cache
--norange Disable header::Range support (partial request)
--nosort Disable directory entries sort (by: name, modified, size)
-s, --silent Disable all outputs
-u, --upload Enable upload files (multiple select) (CSRF token required)
-V, --version Prints version information
OPTIONS:
-a, --auth HTTP Basic Auth (username:password)
--cert TLS/SSL certificate (pkcs#12 format)
--certpass TLS/SSL certificate password
-c, --compress ...
Enable file compression: gzip/deflate
Example: -c=js,d.ts
Note: disabled on partial request!
--ip IP address to bind [default: 0.0.0.0]
-p, --port Port number [default: 8000]
--redirect takes a URL to redirect to using HTTP 301 Moved Permanently
-t, --threads How many worker threads [default: 3]
--try-file
serve this file (server root relative) in place of missing files (useful for single page apps) [aliases:
try-file-404]
-l, --upload-size-limit Upload file size limit [bytes] [default: 8000000]
Website hosting example
Point the program to the website folder
The Home page of the website should be available on the root of the folder
The Home page should be named as index.html
simple-http-server -i -p 80 folder-name
This command will use the port 80 (the certified port for HTTP servers), you can change as you wish.