4xthe mini multi-tasking HTTP/1.1 web-server
It does not yet support HTTP "Digest" authentication.
However, it can run attached to either a single IP address, or to all addresses available on the server system, so it can be used to provide multiple separate web-sites from a single system, at the cost of running multiple copies (each attached to a single address). Full support for vistual hosts is a planned enhancement.
4x is not a proxy server, and is not intended to ever be such.
At the time of writing, 4x does not support SSL/TLS encryption (HTTPS).
If CGI support is enabled, a mandatory timeout must also be specified, to prevent runaway CGI programs from needlessly consuming server system resources.
Note: CGI programs are currently run under the same user-account that the web-server itself runs as, and should therefore be vetted for security implications, such as the ability to reach files outside the document-root.
Options to run CGIs under an explicitly designated user account, and to run in a "chroot" restricted environment, are being researched.
By design, it does not suffer from address-space exhaustion, nor from memory-exhaustion due to overlarge fixed stack allocations, thread-races/collisions, and a number of other issues that can affect threaded servers; but it does so whilst still providing fully concurrent client sessions.
Due to its' simple multi-process mode of operation, a single process (session) crash, even though uinlikely, simply cannot bring down the entire web-server software, nor any other client session.
Also, because such a multi-process synchronous-I/O architecture has no internal race-conditions, it is much easier to reason about its' correctness even in the face of malformed inputs or malfunctioning clients. I am not claiming that 4x is completely bug-free, rather that its' architecture simply has less scope for bugs in the first place. Time will tell...
|System||CPU||CPU clock||RAM||Vintage||O/S||Max Simultaneous
Clients (without swapping)
|Pentium-II||233 MHz||160 Mb||1998||Solaris 8||1113|
|SPARCstation-10||dual HyperSPARC||180 MHz||512 Mb||1996||Solaris 2.6||2242|
Care has been taken to ensure that the rate of new connections-per-second and throughput degrade gradually under load, rather than suddenly "falling off a cliff".
4x goes to some effort to avoid emmission of more network packets than necessary: it is not a "selfish" implementation in that way; and thus has reasonably good throughput on typical WAN (high-throughput, high-latency) networks.