Duration: 2005-ongoing

Contact Person: Univ.-Prof. Dr. Gustaf Neumann

NaviServer is a programmable web server written in C and Tcl. It offers many features for building custom web sites. The implementation is high performance, but the interface is easy to use, at both the C and Tcl level.



Features include:


  • Hybrid multi-threaded / async architecture for easy programmer interface and high performance
  • Threads isolated from each other with own Tcl interpreters [1]
  • Shares data between threads easily with protected variables and caches[2]
  • Pooled database connections[3] (also: nsdbi)
  • Dynamic Pages in TCL [4] (PHP- and ASP-like syntax)
  • Built-in cron-like scheduling
  • Watchdog for restarting server
  • Efficient handling for large up- and downloads (spooling and writer threads)
  • Optional non-blocking log file writing (to avoid file system latencies, since 4.99.4)
  • Fully async drivers for HTTP and SSL (based on poll(), supporting several 1000 file descriptors, since 4.99.4)
  • Gzipped delivery of dynamic and static content (since 4.99.5)
  • Support for IPv6 (since 4.99.11)
  • Integrated support for HTTPs (since 4.99.12, was an extra module called [nsssl] before)
  • Native crypto support based on OpenSSL (since 4.99.12, including HMAC, message digests, HOTP (RFC 6238 one time passwords), TOTP (RFC 6238 time based one time passwords)
  • Reverse proxy (since 4.99.14, via modules revproxy)
  • Dynamic thread pool mapping (since 4.99.15)
  • Caching with transaction semantics, rollback changes in cache when e.g. DB rollbacks occur (since 4.99.16)
  • Tcl configuration file[5]
  • and much, much more..!


Runs (and is tested regularly) on: Linux, Solaris, MacOS X. Also runs on FreeBSD and Windows[6], [7].

For more information: website