nginx [engine x] is a HTTP server and mail proxy server
written by me (Igor Sysoev).
nginx has been running for more than four years
on many heavily loaded Russian sites including
Rambler
(RamblerMedia.com).
In March 2007 about 20% of all Russian virtual hosts were served or proxied
by nginx.
According to Google Online Security Blog year ago
nginx
served or proxied about 4% of all Internet virtual hosts.
2 of Alexa US Top100 sites use
nginx.
According to Netcraft in December 2008
nginx
served or proxied 3.5 millions virtual hosts.
And now it is on 3rd place (not counting in-house Google server)
and ahead of lighttpd.
According to Netcraft in March 2009
nginx
served or proxied 3.06% busiest sites.
According to Netcraft in May 2009
nginx
served or proxied 3.25% busiest sites.
Here are some of success stories:
FastMail.FM,
Wordpress.com.
The development stable versions are
nginx-0.8.4,
nginx/Windows-0.8.4,
the change log.
The latest stable versions are
nginx-0.7.61,
nginx/Windows-0.7.61,
the change log.
The latest legacy stable version is
nginx-0.6.38,
the change log.
The sources are licensed under 2-clause BSD-like license.
English Resources:
The Russian documentation.
Basic HTTP features:
-
Handling of static files, index files, and autoindexing;
open file descriptor cache;
-
Accelerated reverse proxying with caching;
simple load balancing and fault tolerance;
-
Accelerated support with caching of remote FastCGI servers;
simple load balancing and fault tolerance;
-
Modular architecture.
Filters include gzipping, byte ranges, chunked responses, XSLT, and SSI.
Multiple SSI inclusions within a single page can be processed in
parallel if they are handled by FastCGI or proxied servers.
-
SSL and TLS SNI support.
Mail proxy server features:
-
User redirection to IMAP/POP3 backend using an external HTTP
authentication server;
-
User authentication using an external HTTP authentication server
and connection redirection to internal SMTP backend;
-
Authentication methods:
-
POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
-
IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
-
SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
-
SSL support;
-
STARTTLS and STLS support.
Tested OS and platforms:
-
FreeBSD 3 — 7 / i386; FreeBSD 5 — 7 / amd64;
-
Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64;
-
Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
-
MacOS X / ppc, i386;
-
Windows XP, Windows Server 2003.
Architecture and scalability:
-
one master process and several workers processes.
The workers run as unprivileged user;
-
kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+),
/dev/poll (Solaris 7 11/99+), event ports (Solaris 10),
select, and poll support;
-
various kqueue features support including EV_CLEAR, EV_DISABLE
(to disable event temporalily), NOTE_LOWAT, EV_EOF, number of available data,
error codes;
-
sendfile (FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5), sendfile64 (Linux 2.4.21+),
and sendfilev (Solaris 8 7/01+) support;
-
accept-filter (FreeBSD 4.1+) and TCP_DEFER_ACCEPT (Linux 2.4+) support;
-
10,000 inactive HTTP keep-alive connections take about 2.5M memory;
-
data copy operations are kept to a minimum.
Other HTTP features:
-
name- and IP-based virtual servers;
-
keep-alive and pipelined connections support;
-
flexible configuration;
-
reconfiguration and online upgrade without interruption
of the client processing;
-
access log formats, bufferred log writing, and quick log rotation;
-
4xx-5xx error codes redirection;
-
rewrite module;
-
access control based on client IP address and HTTP Basic authentication;
-
PUT, DELETE, MKCOL, COPY and MOVE methods;
-
FLV streaming;
-
speed limitation;
-
limitation of simultaneous connections or requests from one address.
Experimental features: