nostromo <

Introduction

nhttpd is a simple, fast and secure HTTP server. It runs as a single process, handling connections with select(2). For CGIs and directory listing it does fork(2). nhttpd has the minimum of HTTP/1.1 and CGI/1.1 implemented. Also supported are; chroot, setuid, basic authentication, SSL, IPv6, custom repsonses, aliases, and virtual hosts. To stop the server send a SIGTERM signal to the PID. The access log is written in standard CLF format.

Read more in the man page.

Note: Compilation and testing has been successfully done on OpenBSD, FreeBSD, NetBSD, and Linux.

Download

nostromo-2.1.tar.gz - latest release

CVS

Get current development source
cvs -d anoncvs@cvs.nazgul.ch:/cvs checkout nostromo

Get latest release

cvs -d anoncvs@cvs.nazgul.ch:/cvs checkout -r NOSTROMO_2_1 nostromo

ChangeLog (2.2)

No changes yet

Full ChangeLog

Performance

Updated: 19th January 2006

To see how nostromo performs, we have compared it with two popular webservers. That is apache and thttpd. The load has been generated with http_load. We used a sparc as client and an intel as server connected to a switch, all 100Mbit. Here the data put together in detail:

Webservers

apache 1.3.29
thttpd 2.25b
nostromo 1.7.7

Webclient simulation

http_load -checksum -parallel n -seconds 15 url

Hardware

Client: resurrection, Sun Ultra 2, SPARC 400MHz, 100Mbit NIC
Server: gollum, Intel, x86 3GHz, 100Mbit NIC

We did the measurement for three different scenarios; small files of 1KB, larger files of 16KB, and a small CGI. The measurement always started with 5 concurrent clients and increased for 5 clients every 15 seconds until the maximum of 300 concurrent clients was reached. To be sure that the sent data was right, we turned on checksum verification in http_load.

The measurements have been repeated several times at different days and compared together, so we can be sure that the results are correct. And here they are:

httperf small

httperf large

httperf cgi