nginx [engine x] is a HTTP server and mail proxy server
written by me (Igor Sysoev).
nginx has been running for more than three 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, although Netcraft showed
much
less percent.
According to Netcraft in March 2008
nginx
served or proxied 1 million virtual hosts.
The growing in picture
and color!
2 of Alexa Top100 sites use
nginx.
Here are some of success stories:
FastMail.FM,
Wordpress.com.
The last stable version is
nginx-0.6.30,
the change log.
The last legacy stable version is
nginx-0.5.36,
the change log.
The sources are licensed under a BSD-like license.
The English Wiki.
The Russian documenatation.
Basic HTTP features:
-
Handling of static files, index files, and autoindexing;
open file descriptor cache;
-
Accelerated reverse proxying without caching,
simple load balancing and fault tolerance;
-
Accelerated support without caching of remote FastCGI servers,
simple load balancing and fault tolerance;
-
Modular architecture.
Filters include gzipping, byte ranges, chunked responses, 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;
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+), sendfile (Linux 2.2+), 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 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 from one address.
Experimental features: