Mercurial > hg > nginx-site
view xml/en/index.xml @ 2199:1d60e4b4ed64
Documented SO_REUSEPORT_LB for listen reuseport.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Tue, 03 Jul 2018 15:52:40 +0300 |
parents | b73ccabb852b |
children | b4ed6d353111 |
line wrap: on
line source
<!-- Copyright (C) Igor Sysoev Copyright (C) Nginx, Inc. --> <!DOCTYPE article SYSTEM "../../dtd/article.dtd"> <article name="nginx" link="/en/" lang="en" rev="92"> <section> <para> nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by <link url="http://sysoev.ru/en/">Igor Sysoev</link>. For a long time, it has been running on many heavily loaded Russian sites including <link url="http://www.yandex.ru">Yandex</link>, <link url="http://mail.ru">Mail.Ru</link>, <link url="http://vk.com">VK</link>, and <link url="http://www.rambler.ru">Rambler</link>. According to Netcraft, nginx served or proxied <link url="https://news.netcraft.com/archives/2018/06/13/june-2018-web-server-survey.html">24.68% busiest sites in June 2018</link>. Here are some of the success stories: <link url="https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency/">Dropbox</link>, <link url="https://openconnect.netflix.com/en/software/">Netflix</link>, <link url="https://www.nginx.com/case-studies/nginx-wordpress-com/">Wordpress.com</link>, <link url="http://blog.fastmail.fm/2007/01/04/webimappop-frontend-proxies-changed-to-nginx/">FastMail.FM</link>. </para> <para> The sources and documentation are distributed under the <link url="../LICENSE">2-clause BSD-like license</link>. </para> <para> Commercial support is available from <link url="https://www.nginx.com">Nginx, Inc.</link> </para> </section> <section id="basic_http_features" name="Basic HTTP server features"> <para> <list type="bullet"> <listitem> Serving static and <link doc="docs/http/ngx_http_index_module.xml">index</link> files, <link doc="docs/http/ngx_http_autoindex_module.xml">autoindexing</link>; <link doc="docs/http/ngx_http_core_module.xml" id="open_file_cache">open file descriptor cache</link>; </listitem> <listitem> <link doc="docs/http/ngx_http_proxy_module.xml">Accelerated reverse proxying with caching</link>; <link doc="docs/http/ngx_http_upstream_module.xml">load balancing and fault tolerance</link>; </listitem> <listitem> Accelerated support with caching of <link doc="docs/http/ngx_http_fastcgi_module.xml">FastCGI</link>, <link doc="docs/http/ngx_http_uwsgi_module.xml">uwsgi</link>, <link doc="docs/http/ngx_http_scgi_module.xml">SCGI</link>, and <link doc="docs/http/ngx_http_memcached_module.xml">memcached</link> servers; <link doc="docs/http/ngx_http_upstream_module.xml">load balancing and fault tolerance</link>; </listitem> <listitem> Modular architecture. Filters include <link doc="docs/http/ngx_http_gzip_module.xml">gzipping</link>, byte ranges, chunked responses, <link doc="docs/http/ngx_http_xslt_module.xml">XSLT</link>, <link doc="docs/http/ngx_http_ssi_module.xml">SSI</link>, and <link doc="docs/http/ngx_http_image_filter_module.xml">image transformation</link> filter. Multiple SSI inclusions within a single page can be processed in parallel if they are handled by proxied or FastCGI/uwsgi/SCGI servers; </listitem> <listitem> <link doc="docs/http/ngx_http_ssl_module.xml">SSL and TLS SNI support</link>; </listitem> <listitem> Support for <link doc="docs/http/ngx_http_v2_module.xml">HTTP/2</link> with weighted and dependency-based prioritization. </listitem> </list> </para> </section> <section id="other_http_features" name="Other HTTP server features"> <para> <list type="bullet"> <listitem> Name-based and IP-based <link doc="docs/http/request_processing.xml">virtual servers</link>; </listitem> <listitem> <link doc="docs/http/ngx_http_core_module.xml" id="keepalive_timeout">Keep-alive</link> and pipelined connections support; </listitem> <listitem> <link doc="docs/http/ngx_http_log_module.xml" id="log_format">Access log formats</link>, <link doc="docs/http/ngx_http_log_module.xml" id="access_log">buffered log writing</link>, <link doc="docs/control.xml" id="logs">fast log rotation</link>, and <link doc="docs/syslog.xml">syslog logging</link>; </listitem> <listitem> 3xx-5xx error codes <link doc="docs/http/ngx_http_core_module.xml" id="error_page">redirection</link>; </listitem> <listitem> The rewrite module: <link doc="docs/http/ngx_http_rewrite_module.xml">URI changing using regular expressions</link>; </listitem> <listitem> <link doc="docs/http/ngx_http_rewrite_module.xml" id="if">Executing different functions</link> depending on the <link doc="docs/http/ngx_http_geo_module.xml">client address</link>; </listitem> <listitem> Access control based on <link doc="docs/http/ngx_http_access_module.xml">client IP address</link>, <link doc="docs/http/ngx_http_auth_basic_module.xml">by password (HTTP Basic authentication)</link> and by the <link doc="docs/http/ngx_http_auth_request_module.xml">result of subrequest</link>; </listitem> <listitem> Validation of <link doc="docs/http/ngx_http_referer_module.xml">HTTP referer</link>; </listitem> <listitem> The <link doc="docs/http/ngx_http_dav_module.xml">PUT, DELETE, MKCOL, COPY, and MOVE</link> methods; </listitem> <listitem> <link doc="docs/http/ngx_http_flv_module.xml">FLV</link> and <link doc="docs/http/ngx_http_mp4_module.xml">MP4</link> streaming; </listitem> <listitem> <link doc="docs/http/ngx_http_core_module.xml" id="limit_rate">Response rate limiting</link>; </listitem> <listitem> Limiting the number of simultaneous <link doc="docs/http/ngx_http_limit_conn_module.xml">connections</link> or <link doc="docs/http/ngx_http_limit_req_module.xml">requests</link> coming from one address; </listitem> <listitem> <link doc="docs/http/ngx_http_geoip_module.xml">IP-based geolocation</link>; </listitem> <listitem> <link doc="docs/http/ngx_http_split_clients_module.xml">A/B testing</link>; </listitem> <listitem> <link doc="docs/http/ngx_http_mirror_module.xml">Request mirroring</link>; </listitem> <listitem> Embedded <link doc="docs/http/ngx_http_perl_module.xml">Perl</link>; </listitem> <listitem> <link doc="docs/njs_about.xml">njs</link>. </listitem> </list> </para> </section> <section id="mail_proxy_server_features" name="Mail proxy server features"> <para> <list type="bullet"> <listitem> User redirection to <link doc="docs/mail/ngx_mail_imap_module.xml">IMAP</link> or <link doc="docs/mail/ngx_mail_pop3_module.xml">POP3</link> server using an external HTTP <link doc="docs/mail/ngx_mail_auth_http_module.xml">authentication</link> server; </listitem> <listitem> User authentication using an external HTTP <link doc="docs/mail/ngx_mail_auth_http_module.xml">authentication</link> server and connection redirection to an internal <link doc="docs/mail/ngx_mail_smtp_module.xml">SMTP</link> server; </listitem> <listitem> Authentication methods: <list type="bullet"> <listitem> <link doc="docs/mail/ngx_mail_pop3_module.xml" id="pop3_auth">POP3</link>: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5; </listitem> <listitem> <link doc="docs/mail/ngx_mail_imap_module.xml" id="imap_auth">IMAP</link>: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5; </listitem> <listitem> <link doc="docs/mail/ngx_mail_smtp_module.xml" id="smtp_auth">SMTP</link>: AUTH LOGIN/PLAIN/CRAM-MD5; </listitem> </list> </listitem> <listitem> <link doc="docs/mail/ngx_mail_ssl_module.xml">SSL</link> support; </listitem> <listitem> <link doc="docs/mail/ngx_mail_ssl_module.xml" id="starttls">STARTTLS and STLS</link> support. </listitem> </list> </para> </section> <section id="generic_proxy_server_features" name="TCP/UDP proxy server features"> <para> <list type="bullet"> <listitem> <link doc="docs/stream/ngx_stream_proxy_module.xml">Generic proxying</link> of TCP and UDP; </listitem> <listitem> <link doc="docs/stream/ngx_stream_ssl_module.xml">SSL</link> and TLS <link doc="docs/stream/ngx_stream_ssl_preread_module.xml">SNI</link> support for TCP; </listitem> <listitem> <link doc="docs/stream/ngx_stream_upstream_module.xml">Load balancing and fault tolerance</link>; </listitem> <listitem> Access control based on <link doc="docs/stream/ngx_stream_access_module.xml">client address</link>; </listitem> <listitem> Executing different functions depending on the <link doc="docs/stream/ngx_stream_geo_module.xml">client address</link>; </listitem> <listitem> Limiting the number of simultaneous <link doc="docs/stream/ngx_stream_limit_conn_module.xml">connections</link> coming from one address; </listitem> <listitem> <link doc="docs/stream/ngx_stream_log_module.xml" id="log_format">Access log formats</link>, <link doc="docs/stream/ngx_stream_log_module.xml" id="access_log">buffered log writing</link>, <link doc="docs/control.xml" id="logs">fast log rotation</link>, and <link doc="docs/syslog.xml">syslog logging</link>; </listitem> <listitem> <link doc="docs/stream/ngx_stream_geoip_module.xml">IP-based geolocation</link>; </listitem> <listitem> <link doc="docs/stream/ngx_stream_split_clients_module.xml">A/B testing</link>; </listitem> <listitem> <link doc="docs/stream/ngx_stream_js_module.xml">njs</link>. </listitem> </list> </para> </section> <section id="architecture_and_scalability" name="Architecture and scalability"> <para> <list type="bullet"> <listitem> One master and several worker processes; worker processes run under an unprivileged user; </listitem> <listitem> <link doc="docs/example.xml">Flexible configuration</link>; </listitem> <listitem> <link doc="docs/control.xml" id="reconfiguration">Reconfiguration</link> and <link doc="docs/control.xml" id="upgrade">upgrade of an executable</link> without interruption of the client servicing; </listitem> <listitem> <link doc="docs/events.xml">Support</link> for kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select, and poll; </listitem> <listitem> 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; </listitem> <listitem> The support of various epoll features including EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) and EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+); </listitem> <listitem> sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+), and sendfilev (Solaris 8 7/01+) support; </listitem> <listitem> <link doc="docs/http/ngx_http_core_module.xml" id="aio">File AIO</link> (FreeBSD 4.3+, Linux 2.6.22+); </listitem> <listitem> <link doc="docs/http/ngx_http_core_module.xml" id="directio">DIRECTIO</link> (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS); </listitem> <listitem> Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) and TCP_DEFER_ACCEPT (Linux 2.4+) <link doc="docs/http/ngx_http_core_module.xml" id="listen">support</link>; </listitem> <listitem> 10,000 inactive HTTP keep-alive connections take about 2.5M memory; </listitem> <listitem> Data copy operations are kept to a minimum. </listitem> </list> </para> </section> <section id="tested_os_and_platforms" name="Tested OS and platforms"> <para> <list type="bullet"> <listitem> FreeBSD 3—11 / i386; FreeBSD 5—11 / amd64; </listitem> <listitem> Linux 2.2—4 / i386; Linux 2.6—4 / amd64; Linux 3—4 / armv6l, armv7l, aarch64, ppc64le; </listitem> <listitem> Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v; </listitem> <listitem> AIX 7.1 / powerpc; </listitem> <listitem> HP-UX 11.31 / ia64; </listitem> <listitem> macOS / ppc, i386; </listitem> <listitem> Windows XP, Windows Server 2003. </listitem> </list> </para> </section> </article>