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.
Features include:
- 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 )
Configuration Examples
HowTo
Ancient History
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.
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.
Comments
dox 27sept2024
The latest is now hosted on GitHub and still actively maintained with support for TCL9.
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 ]