nginx
| Basic HTTP server features Other HTTP server features Mail proxy server features TCP/UDP proxy server features Architecture and scalability Tested OS and platforms |
nginx ("engine x") is an HTTP web server, reverse proxy, content cache, load balancer, TCP/UDP proxy server, and mail proxy server. Originally written by Igor Sysoev and distributed under the 2-clause BSD License.
Known for flexibility and high performance with low resource utilization, nginx is:
- the world's most popular web server [];
- consistently one of the most popular [];
- powering multiple , including our own.
Enterprise distributions, commercial support and training are available from F5, Inc.
Basic HTTP server features
- Serving static and files, ; ;
- ; ;
- Accelerated support with caching of , , , and servers; ;
- Modular architecture. Filters include , byte ranges, chunked responses, , , and filter. Multiple SSI inclusions within a single page can be processed in parallel if they are handled by proxied or FastCGI/uwsgi/SCGI servers;
- ;
- Support for with weighted and dependency-based prioritization;
- Support for .
Other HTTP server features
- Name-based and IP-based ;
- and pipelined connections support;
- , , , and ;
- 3xx-5xx error codes ;
- The rewrite module: ;
- depending on the ;
- Access control based on , and by the ;
- Validation of ;
- The methods;
- and streaming;
- ;
- Limiting the number of simultaneous or coming from one address;
- ;
- ;
- ;
- Embedded ;
- njs scripting language.
Mail proxy server features
- User redirection to or server using an external HTTP server;
- User authentication using an external HTTP server and connection redirection to an internal server;
-
Authentication methods:
- : USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
- : LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
- : AUTH LOGIN/PLAIN/CRAM-MD5;
- support;
- support.
TCP/UDP proxy server features
- of TCP and UDP;
- and TLS support for TCP;
- ;
- Access control based on ;
- Executing different functions depending on the ;
- Limiting the number of simultaneous coming from one address;
- , , , and ;
- ;
- ;
- njs scripting language.
Architecture and scalability
- One master and several worker processes; worker processes run under an unprivileged user;
- ;
- and without interruption of the client servicing;
- for kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select, and poll;
- The support of the various kqueue features including EV_CLEAR, EV_DISABLE (to temporarily disable events), NOTE_LOWAT, EV_EOF, number of available data, error codes;
- The support of various epoll features including EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) and EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);
- sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+), and sendfilev (Solaris 8 7/01+) support;
- (FreeBSD 4.3+, Linux 2.6.22+);
- (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
- Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) and TCP_DEFER_ACCEPT (Linux 2.4+) ;
- 10,000 inactive HTTP keep-alive connections take about 2.5M memory;
- Data copy operations are kept to a minimum.
Tested OS and platforms
- FreeBSD 3 — 12 / i386; FreeBSD 5 — 12 / amd64; FreeBSD 11 / ppc; FreeBSD 12 / ppc64;
- Linux 2.2 — 4 / i386; Linux 2.6 — 5 / amd64; Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le; Linux 4 — 5 / s390x;
- Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v; Solaris 11 / x86;
- AIX 7.1 / powerpc;
- HP-UX 11.31 / ia64;
- macOS / ppc, i386, x86_64;
- Windows XP, Windows Server 2003, Windows 7, Windows 10, Windows 11.