A fast simple command line http server tool.
If you're looking for a simple, fast, easy-to-use, generic-MIME-types-supporting and partial-content-supporting static file server like me, it might be an option.
Warning: It is currently an experimental project. Use it at your own risk!!!
the main features are as followings, and certainly more will be added:
- performant and essy to use
- multi-platform support
- multiple MIME support
- colored logs
- partial content support
- HTTP/1.1 Standard Support:
- ✅ Basic HTTP/1.1 protocol support
- ✅ Standard HTTP methods
- ✅ Standard HTTP headers
- ✅ Status codes
- Performance Features:
- ✅ Asynchronous I/O (using tokio)
- ✅ Chunked file transfer (Range request support)
- ✅ Static file serving
- ✅ Directory listing
- ✅ Graceful shutdown
- Security Features:
- ✅ HTTPS support (TLS/SSL)
- ✅ Basic error handling
- ✅ Request logging
- Functional Features:
- ✅ MIME type support
- ✅ File system navigation
- ✅ Breadcrumb navigation
- ✅ Response time tracking
- HTTP Standards:
- ⏳ HTTP/2 support
- ⏳ HTTP/3 support
- ⏳ WebSocket support
- ⏳ Compression support (gzip, deflate)
- Performance Optimizations:
- ⏳ Connection pool management
- ⏳ Cache control
- ⏳ Compression transmission
- ⏳ Load balancing
- ⏳ Request rate limiting
- Security Enhancements:
- ⏳ CORS support
- ⏳ Security headers (HSTS, etc.)
- ⏳ Request validation
- ⏳ Access control
- Advanced Features:
- ⏳ Dynamic content generation
- ⏳ Session management
- ⏳ Authentication & Authorization
- ⏳ API support
- ⏳ Reverse proxy
- Monitoring & Management:
- ⏳ Performance metrics collection
- ⏳ Health checks
- ⏳ Management interface
- ⏳ Hot reload configuration
Download pre-built binaries from release page.
or install with cargo
in terminal:
cargo install httprs
# quick start, running on http://127.0.0.1:9900
httprs
# run in insecure mode
httprs -H 0.0.0.0 -P 10000
# run in secure mode
httprs --secure --key /path/to/keyfile --cert /path/to/certfile
# run with graceful shutdown
httprs --graceful-shutdown
# help for more details
httprs --help
- Logging
- Request/Response Logging
- Silent Mode
- Logging Level
- Logging Output into File
- File Browser Support
- Generic File Type Supporting: image/text/video/binary
- File Metadata Details
- File Size
- Last Modified
- More if Necessary
- File List Ordering
- Content-Type Customization
- Multiplatform Support
- macOS
- Linux
- Windows
- HTTPS/TLS Transmission Encryption
- Partial Request/Response Support
-
If-Range
REQUEST Header -
If-Match
REQUEST Header -
Range
REQUEST Header: when file size exceeds 50MB -
Accept-Ranges
RESPONSE Header -
Content-Range
RESPONSE Header - CODE
206
- Partial Content - CODE
416
- Range Not Satisfiable
-
- CORS Support
- Transmission Compression
- Authentication
- Simple Basic
- Token Based
- Graceful Shutdown
- Proxy
- Themes and Appearances Customization
Any advice is welcomed and feel free to make a fork and push your own code.
Thanks to those who are inspiring me, supporting me, providing me with ideas, advice, solutions, and all users who bear much using this.
- http-server-rs/http-server for initial thoughts.
- egmkang/local_ipaddress for resolving intranet binding IP addresses.
MIT License