Main ✸ Source Code ✸ Downloads ✸ API Documentation ✸ Mailing Lists ✸ Bugs ✸ Developers ✸ News
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.
- Hybrid multi-threaded / async architecture for easy programmer interface and high performance
- Threads isolated from each other with own Tcl interpreters [L1 ]
- Shares data between threads easily with protected variables and caches[L2 ]
- Pooled database connections[L3 ] (also: nsdbi)
- Dynamic Pages in TCL [L4 ] (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[L5 ]
- and much, much more..!
Runs (and is tested regularly) on: Linux, Solaris, MacOS X. Also runs on FreeBSD and Windows[L6 ], [L7 ].
Modules (documented so far on this wiki)
- nsdbi database interface, and drivers: nsdbipg, nsdbimy, nsdbilite.
- database drivers for the original nsdb interface: nsdbpg, nsdbtds, nsdbmysql, nsdbsqlite, nsdbdbd
- protocol drivers to extend naviserver's capabilities beyond the web: nsudp, nsicmp, nssnmp, nsdns, nssyslogd, nsimap, nsldapd, nssnmtpd, nsradiusd, nsdhcpd, nswebsocket, revproxy
- service modules: nsstats, nsmemcache, msauthpam, nsaccess, nsexpat, nsgdchart, nsphp, nsvfs, nszlib, nsletsencrypt
- (complete list of modules , and here modules with documentation )
The code was originally (Feb 2005) forked from the AOLserver 4.10 branch, but has seen many independent changes since then, and many back-ports of subsequent AOLserver 4.5 features. The current state of the code:
The two large spikes are imports of the entire Tcl codebase, from back in the day when AOLserver needed to patch it for thread safety. Here is the commit activity (green), compared to AOLserver (red):
Interestingly, AOLserver was originally called Naviserver before AOL bought the startup NaviSoft. NaviSoft is mentioned in Charles Ferguson's book High Stakes, No Prisoners: A Winner's Tale of Greed and Glory in the Internet Wars[L8 ], the story of his company Vermeer which developed FrontPage and he sold to Microsoft.
RLH - According to the downloads page...not updated since February 2006?
Old SF download system is not used because of constant development efforts, everybody is encourages to use repository. Recently the latest version is put into SF download area.
More here http://www.crystalballinc.com/vlad/software/naviserver/
ARR 2013-07-30 Is there anybody using NaviServer on Windows who managed ns_proxy to work? Nice to hear from you.
AntonioPisano 2017-02-28 Support for Naviserver on Windows is currently provided by a company called SpazioIT. More info here [L9 ]