fserv is an HTTP server that can serve static files, act as a forward and reverse HTTP proxy server, stream media content (SHOUTcast). It has a very high speed on all supported platforms due to its asynchronous I/O event architecture. It can easily process thousands of requests in parallel. The functionality of fserv can be extended by adding new modules.
When configured as a proxy server, it caches responses from upstream servers on a local filesystem, dramatically speeding up the response time when the same request is received again.
fserv can act as an Internet radio trasmitter or it can re-transmit other Internet radio stations. In the latter case it also can record songs into MP3 files on a local machine, which makes it a useful music-grabber.
There is no installation needed, just unpack the archive and set the server root directory in the configuration file. It's easy to configurate it - there are several default configuration files for common use-cases.Platforms the binaries were tested on:
- CentOS 7
- FreeBSD 10
- Windows 8
I continue to publish the source code to GitHub. You can download it from GitHub.
- Loadable external modules (you can define several modules within one binary .so/.dll file). Modules have the unlimited abilities to interact with each other.
- Very high speed on all supported platforms
- Small memory usage
- Powerful configuration abilities with dynamic variables
- Buffered logging. The output can be passed to a file or sent through a HTTP connection.
- Real-time status. Shows the number of currently active network connections, cached entries, etc.
- Both IPv4 and IPv6 are supported
- Asynchronous DNS resolve
- Virtual hosts, routing paths, data filtering
- Serving static files, directory auto-indexing with caching
- HTTP proxy and reverse HTTP proxy with caching and keep-alive connections
- Configurable HTTP request and response headers
- Custom HTML templates (e.g. for directory auto-indexing)
- Streaming local audio files from the M3U list
- Re-transmit remote SHOUTcast traffic (proxy)
- Storing received data in files on disk with preallocation and data buffering
- On-demand streaming: suspend the stream when there are no listeners