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 all network interfaces (0.0.0.0:9900)
httprs
# run on specific local IP address
httprs -H 192.168.10.1
# 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 --helpNote: By default, the server binds to
0.0.0.0which means it will listen on all available network interfaces. This makes the server accessible from other devices on the network. If you want to restrict access to localhost only, use-H 127.0.0.1.
- 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-RangeREQUEST Header -
If-MatchREQUEST Header -
RangeREQUEST Header: when file size exceeds 50MB -
Accept-RangesRESPONSE Header -
Content-RangeRESPONSE 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