mirror of
https://gitlab.com/harald.mueller/aktuelle.kurse.git
synced 2024-11-30 21:51:56 +01:00
410 lines
14 KiB
Plaintext
410 lines
14 KiB
Plaintext
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>nginx</title><style type="text/css">body { background: white; color: black; font-family: sans-serif; line-height: 1.4em; text-align: center; margin: 0; padding: 0; } #banner { background: black; color: #F2F2F2; line-height: 1.2em; padding: .3em 0; box-shadow: 0 5px 10px black; } #banner a { color: #00B140; } #main { text-align: left; margin: 0 auto; min-width: 32em; max-width: 64em; } #menu { float: right; width: 11em; padding: 0 .5em 1em .5em; border-left: 2px solid #DDD; } #content { margin-right: 13.5em; padding: 0 .2em 0 1.5em; } h1 { display: block; font-size: 3em; text-align: left; height: .7em; margin: 0; margin-bottom: .5em; } h1 img { width: 100%; } h2 { text-align: center; } p { text-align: justify; } table.news p { margin-top: 0; } table.news td { vertical-align: baseline; } table.news .date { text-align: right; padding-right: 0.5em; white-space: nowrap; } table.donors td { vertical-align: baseline; } table.donors li { text-align: left; } div.directive { background: #F2F2F2; line-height: 1em; margin: 1em 0 1em -1em; padding: .7em .7em .7em 1em; border-top: 2px solid #DDD; } div.directive th { padding-left: 0; padding-right: .5em; vertical-align: baseline; text-align: left; font-weight: normal; } div.directive td { vertical-align: baseline; } div.directive pre { padding: 0; margin: 0; } div.directive p { margin: .5em 0 0 .1em; font-size: .8em; } a.notrans { color: gray; text-decoration:none; } span.initial { font-size: 200%; float: left; padding-right: 10pt;} ul, ol { margin: .5em 0 1em 1em; padding: 0 .5em; } ol { list-style-position: inside; } li { text-align: justify; padding: .5em 0 0 1px; } .compact li { padding-top: 0; } dl { margin: .5em 0 1em 0; } dt { margin: .5em 0; } .compact dt { margin-bottom: .2em; } dd { margin-left: 1.5em; padding-left: 1px; text-align: justify; } td.list { background: #F2F2F2; } blockquote { margin: 1em 0 1em 1em; padding: .5em; } li blockquote, dd blockquote { margin: .7em 0; } blockquote.note { border: 1px dotted #999; line-height: 1.2em; text-align: justify; } blockquote.example { line-height: 1em; border-left: 1px solid #BBB; } blockquote.example pre { padding: 0; margin: 0; } sup { font-size: 50%; } .video { position: relative; padding-bottom: 56.25%; overflow: hidden; } .video iframe, .video object, .video embed { position: absolute; top:0; left:0; width:100%; height:100%; }</style><script>
|
||
window.addEventListener("load", function(e) {
|
||
fetch("../banner/banner.html")
|
||
.then((response) => response.text())
|
||
.then((resp) => {
|
||
document.getElementById("banner").innerHTML = resp;
|
||
})
|
||
.catch((error) => {
|
||
console.warn(error);
|
||
});
|
||
});
|
||
</script></head><body><div id="banner"></div><div id="main"><div id="menu"><h1><a href="/"><img src="/nginx.png" alt="nginx"></a></h1><div>english<br><a href="../ru/">русский</a><br><br><a href="../">news</a><br>about<br><a href="download.html">download</a><br><a href="security_advisories.html">security</a><br><a href="docs/">documentation</a><br><a href="docs/faq.html">faq</a><br><a href="books.html">books</a><br><a href="support.html">support</a><br><br><a href="http://trac.nginx.org/nginx">trac</a><br><a href="http://twitter.com/nginxorg">twitter</a><br><a href="https://www.nginx.com/blog/">blog</a><br><br><a href="https://unit.nginx.org/">unit</a><br><a href="docs/njs/">njs</a><br></div></div><div id="content"><h2>nginx</h2><table width="100%"><tr><td align="left"><a href="#basic_http_features">Basic HTTP server features</a><br><a href="#other_http_features">Other HTTP server features</a><br><a href="#mail_proxy_server_features">Mail proxy server features</a><br><a href="#generic_proxy_server_features">TCP/UDP proxy server features</a><br><a href="#architecture_and_scalability">Architecture and scalability</a><br><a href="#tested_os_and_platforms">Tested OS and platforms</a><br></td></tr></table><p>
|
||
nginx [engine x] is an HTTP and reverse proxy server,
|
||
a mail proxy server,
|
||
and a generic TCP/UDP proxy server,
|
||
originally written by <a href="http://sysoev.ru/en/">Igor Sysoev</a>.
|
||
For a long time, it has been running
|
||
on many heavily loaded Russian sites including
|
||
<a href="http://www.yandex.ru">Yandex</a>,
|
||
<a href="http://mail.ru">Mail.Ru</a>,
|
||
<a href="http://vk.com">VK</a>, and
|
||
<a href="http://www.rambler.ru">Rambler</a>.
|
||
According to Netcraft, nginx served or proxied
|
||
<a href="https://news.netcraft.com/archives/2022/12/20/december-2022-web-server-survey.html">21.25%
|
||
busiest sites in December 2022</a>.
|
||
Here are some of the success stories:
|
||
<a href="https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency/">Dropbox</a>,
|
||
<a href="https://openconnect.netflix.com/en/software/">Netflix</a>,
|
||
<a href="https://www.nginx.com/case-studies/nginx-wordpress-com/">Wordpress.com</a>,
|
||
<a href="http://blog.fastmail.fm/2007/01/04/webimappop-frontend-proxies-changed-to-nginx/">FastMail.FM</a>.
|
||
</p><p>
|
||
The sources and documentation are distributed under the
|
||
<a href="../LICENSE">2-clause BSD-like license</a>.
|
||
</p><p>
|
||
Commercial support is available from
|
||
<a href="https://www.nginx.com">Nginx, Inc.</a>
|
||
</p><a name="basic_http_features"></a><center><h4>Basic HTTP server features</h4></center><p>
|
||
</p> <ul class="compact">
|
||
|
||
<li>
|
||
Serving static and
|
||
<a href="docs/http/ngx_http_index_module.html">index</a>
|
||
files,
|
||
<a href="docs/http/ngx_http_autoindex_module.html">autoindexing</a>;
|
||
<a href="docs/http/ngx_http_core_module.html#open_file_cache">open file descriptor cache</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_proxy_module.html">Accelerated
|
||
reverse proxying with caching</a>;
|
||
<a href="docs/http/ngx_http_upstream_module.html">load balancing
|
||
and fault tolerance</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Accelerated support with caching of
|
||
<a href="docs/http/ngx_http_fastcgi_module.html">FastCGI</a>,
|
||
<a href="docs/http/ngx_http_uwsgi_module.html">uwsgi</a>,
|
||
<a href="docs/http/ngx_http_scgi_module.html">SCGI</a>, and
|
||
<a href="docs/http/ngx_http_memcached_module.html">memcached</a>
|
||
servers;
|
||
<a href="docs/http/ngx_http_upstream_module.html">load balancing
|
||
and fault tolerance</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Modular architecture.
|
||
Filters include
|
||
<a href="docs/http/ngx_http_gzip_module.html">gzipping</a>,
|
||
byte ranges, chunked responses,
|
||
<a href="docs/http/ngx_http_xslt_module.html">XSLT</a>,
|
||
<a href="docs/http/ngx_http_ssi_module.html">SSI</a>,
|
||
and <a href="docs/http/ngx_http_image_filter_module.html">image
|
||
transformation</a> filter.
|
||
Multiple SSI inclusions within a single page can be processed in
|
||
parallel if they are handled by proxied or FastCGI/uwsgi/SCGI servers;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_ssl_module.html">SSL and
|
||
TLS SNI support</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Support for <a href="docs/http/ngx_http_v2_module.html">HTTP/2</a>
|
||
with weighted and dependency-based prioritization.
|
||
</li>
|
||
|
||
</ul><p>
|
||
</p><a name="other_http_features"></a><center><h4>Other HTTP server features</h4></center><p>
|
||
</p> <ul class="compact">
|
||
|
||
<li>
|
||
Name-based and IP-based
|
||
<a href="docs/http/request_processing.html">virtual servers</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_core_module.html#keepalive_timeout">Keep-alive</a>
|
||
and pipelined connections support;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_log_module.html#log_format">Access
|
||
log formats</a>,
|
||
<a href="docs/http/ngx_http_log_module.html#access_log">buffered
|
||
log writing</a>,
|
||
<a href="docs/control.html#logs">fast log rotation</a>, and
|
||
<a href="docs/syslog.html">syslog logging</a>;
|
||
</li>
|
||
|
||
<li>
|
||
3xx-5xx error codes
|
||
<a href="docs/http/ngx_http_core_module.html#error_page">redirection</a>;
|
||
</li>
|
||
|
||
<li>
|
||
The rewrite module:
|
||
<a href="docs/http/ngx_http_rewrite_module.html">URI changing
|
||
using regular expressions</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_rewrite_module.html#if">Executing
|
||
different functions</a> depending on the
|
||
<a href="docs/http/ngx_http_geo_module.html">client address</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Access control based on
|
||
<a href="docs/http/ngx_http_access_module.html">client IP address</a>,
|
||
<a href="docs/http/ngx_http_auth_basic_module.html">by password (HTTP
|
||
Basic authentication)</a> and by the
|
||
<a href="docs/http/ngx_http_auth_request_module.html">result of
|
||
subrequest</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Validation of
|
||
<a href="docs/http/ngx_http_referer_module.html">HTTP referer</a>;
|
||
</li>
|
||
|
||
<li>
|
||
The <a href="docs/http/ngx_http_dav_module.html">PUT, DELETE, MKCOL, COPY,
|
||
and MOVE</a> methods;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_flv_module.html">FLV</a>
|
||
and
|
||
<a href="docs/http/ngx_http_mp4_module.html">MP4</a>
|
||
streaming;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_core_module.html#limit_rate">Response rate limiting</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Limiting the number of simultaneous
|
||
<a href="docs/http/ngx_http_limit_conn_module.html">connections</a>
|
||
or
|
||
<a href="docs/http/ngx_http_limit_req_module.html">requests</a>
|
||
coming from one address;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_geoip_module.html">IP-based geolocation</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_split_clients_module.html">A/B testing</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_mirror_module.html">Request mirroring</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Embedded <a href="docs/http/ngx_http_perl_module.html">Perl</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/njs/index.html">njs</a> scripting language.
|
||
</li>
|
||
|
||
</ul><p>
|
||
</p><a name="mail_proxy_server_features"></a><center><h4>Mail proxy server features</h4></center><p>
|
||
</p> <ul class="compact">
|
||
|
||
<li>
|
||
User redirection to
|
||
<a href="docs/mail/ngx_mail_imap_module.html">IMAP</a>
|
||
or
|
||
<a href="docs/mail/ngx_mail_pop3_module.html">POP3</a>
|
||
server using an external HTTP
|
||
<a href="docs/mail/ngx_mail_auth_http_module.html">authentication</a>
|
||
server;
|
||
</li>
|
||
|
||
<li>
|
||
User authentication using an external HTTP
|
||
<a href="docs/mail/ngx_mail_auth_http_module.html">authentication</a>
|
||
server and connection redirection to an internal
|
||
<a href="docs/mail/ngx_mail_smtp_module.html">SMTP</a> server;
|
||
</li>
|
||
|
||
<li>
|
||
Authentication methods:
|
||
|
||
<ul class="compact">
|
||
|
||
<li>
|
||
<a href="docs/mail/ngx_mail_pop3_module.html#pop3_auth">POP3</a>:
|
||
USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/mail/ngx_mail_imap_module.html#imap_auth">IMAP</a>:
|
||
LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/mail/ngx_mail_smtp_module.html#smtp_auth">SMTP</a>:
|
||
AUTH LOGIN/PLAIN/CRAM-MD5;
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/mail/ngx_mail_ssl_module.html">SSL</a> support;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/mail/ngx_mail_ssl_module.html#starttls">STARTTLS
|
||
and STLS</a> support.
|
||
</li>
|
||
|
||
</ul><p>
|
||
</p><a name="generic_proxy_server_features"></a><center><h4>TCP/UDP proxy server features</h4></center><p>
|
||
</p> <ul class="compact">
|
||
|
||
<li>
|
||
<a href="docs/stream/ngx_stream_proxy_module.html">Generic proxying</a>
|
||
of TCP and UDP;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/stream/ngx_stream_ssl_module.html">SSL</a> and
|
||
TLS <a href="docs/stream/ngx_stream_ssl_preread_module.html">SNI</a> support
|
||
for TCP;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/stream/ngx_stream_upstream_module.html">Load balancing
|
||
and fault tolerance</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Access control based on
|
||
<a href="docs/stream/ngx_stream_access_module.html">client address</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Executing different functions depending on the
|
||
<a href="docs/stream/ngx_stream_geo_module.html">client address</a>;
|
||
</li>
|
||
|
||
<li>
|
||
Limiting the number of simultaneous
|
||
<a href="docs/stream/ngx_stream_limit_conn_module.html">connections</a>
|
||
coming from one address;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/stream/ngx_stream_log_module.html#log_format">Access
|
||
log formats</a>,
|
||
<a href="docs/stream/ngx_stream_log_module.html#access_log">buffered
|
||
log writing</a>,
|
||
<a href="docs/control.html#logs">fast log rotation</a>, and
|
||
<a href="docs/syslog.html">syslog logging</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/stream/ngx_stream_geoip_module.html">IP-based geolocation</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/stream/ngx_stream_split_clients_module.html">A/B testing</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/njs/index.html">njs</a> scripting language.
|
||
</li>
|
||
|
||
</ul><p>
|
||
</p><a name="architecture_and_scalability"></a><center><h4>Architecture and scalability</h4></center><p>
|
||
</p> <ul class="compact">
|
||
|
||
<li>
|
||
One master and several worker processes;
|
||
worker processes run under an unprivileged user;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/example.html">Flexible configuration</a>;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/control.html#reconfiguration">Reconfiguration</a>
|
||
and <a href="docs/control.html#upgrade">upgrade of an
|
||
executable</a> without interruption of the client servicing;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/events.html">Support</a> for
|
||
kqueue (FreeBSD 4.1+),
|
||
epoll (Linux 2.6+),
|
||
/dev/poll (Solaris 7 11/99+), event ports (Solaris 10),
|
||
select, and poll;
|
||
</li>
|
||
|
||
<li>
|
||
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;
|
||
</li>
|
||
|
||
<li>
|
||
The support of various epoll features including
|
||
EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) and
|
||
EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);
|
||
</li>
|
||
|
||
<li>
|
||
sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+),
|
||
and sendfilev (Solaris 8 7/01+) support;
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_core_module.html#aio">File AIO</a>
|
||
(FreeBSD 4.3+, Linux 2.6.22+);
|
||
</li>
|
||
|
||
<li>
|
||
<a href="docs/http/ngx_http_core_module.html#directio">DIRECTIO</a>
|
||
(FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
|
||
</li>
|
||
|
||
<li>
|
||
Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) and TCP_DEFER_ACCEPT (Linux 2.4+)
|
||
<a href="docs/http/ngx_http_core_module.html#listen">support</a>;
|
||
</li>
|
||
|
||
<li>
|
||
10,000 inactive HTTP keep-alive connections take about 2.5M memory;
|
||
</li>
|
||
|
||
<li>
|
||
Data copy operations are kept to a minimum.
|
||
</li>
|
||
|
||
</ul><p>
|
||
</p><a name="tested_os_and_platforms"></a><center><h4>Tested OS and platforms</h4></center><p>
|
||
</p> <ul class="compact">
|
||
|
||
<li>
|
||
FreeBSD 3 — 12 / i386;
|
||
FreeBSD 5 — 12 / amd64;
|
||
FreeBSD 11 / ppc;
|
||
FreeBSD 12 / ppc64;
|
||
</li>
|
||
|
||
<li>
|
||
Linux 2.2 — 4 / i386;
|
||
Linux 2.6 — 5 / amd64;
|
||
Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le;
|
||
Linux 4 — 5 / s390x;
|
||
</li>
|
||
|
||
<li>
|
||
Solaris 9 / i386, sun4u;
|
||
Solaris 10 / i386, amd64, sun4v;
|
||
Solaris 11 / x86;
|
||
</li>
|
||
|
||
<li>
|
||
AIX 7.1 / powerpc;
|
||
</li>
|
||
|
||
<li>
|
||
HP-UX 11.31 / ia64;
|
||
</li>
|
||
|
||
<li>
|
||
macOS / ppc, i386, x86_64;
|
||
</li>
|
||
|
||
<li>
|
||
Windows XP,
|
||
Windows Server 2003,
|
||
Windows 7,
|
||
Windows 10.
|
||
</li>
|
||
|
||
</ul><p>
|
||
</p></div></div></body></html>
|