Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/en/index.xml
1 views
1
<!--
2
Copyright (C) Igor Sysoev
3
Copyright (C) Nginx, Inc.
4
-->
5
6
<!DOCTYPE article SYSTEM "../../dtd/article.dtd">
7
8
<article name="nginx"
9
link="/en/"
10
lang="en"
11
rev="169">
12
13
14
<section>
15
16
<para>
17
nginx ("<i>engine x</i>") is an HTTP web server, reverse proxy,
18
content cache, load balancer,
19
TCP/UDP proxy server,
20
and mail proxy server.
21
Originally written by <link url="http://sysoev.ru/en/">Igor Sysoev</link>
22
and distributed under the
23
<link url="../LICENSE">2-clause BSD License</link>.
24
</para>
25
26
<para>
27
Known for flexibility and high performance with low resource utilization,
28
nginx is:
29
30
<list type="bullet">
31
<listitem>
32
the world's most popular web server
33
[<link url="https://news.netcraft.com/archives/category/web-server-survey/">Netcraft</link>];
34
</listitem>
35
36
<listitem>
37
consistently one of the most popular
38
<link url="https://hub.docker.com/search?q=nginx">Docker images</link>
39
[<link url="https://www.datadoghq.com/docker-adoption/#six">DataDog</link>];
40
</listitem>
41
42
<listitem>
43
powering multiple
44
<link url="https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/">Ingress
45
Controllers for Kubernetes</link>,
46
including
47
<link url="https://github.com/nginxinc/kubernetes-ingress">our own</link>.
48
</listitem>
49
50
</list>
51
</para>
52
53
<para>
54
Enterprise distributions, commercial support and training are
55
<link doc="enterprise.xml">available from F5, Inc.</link>
56
</para>
57
58
</section>
59
60
61
<section id="basic_http_features"
62
name="Basic HTTP server features">
63
64
<para>
65
<list type="bullet">
66
67
<listitem>
68
Serving static and
69
<link doc="docs/http/ngx_http_index_module.xml">index</link>
70
files,
71
<link doc="docs/http/ngx_http_autoindex_module.xml">autoindexing</link>;
72
<link doc="docs/http/ngx_http_core_module.xml"
73
id="open_file_cache">open file descriptor cache</link>;
74
</listitem>
75
76
<listitem>
77
<link doc="docs/http/ngx_http_proxy_module.xml">Accelerated
78
reverse proxying with caching</link>;
79
<link doc="docs/http/ngx_http_upstream_module.xml">load balancing
80
and fault tolerance</link>;
81
</listitem>
82
83
<listitem>
84
Accelerated support with caching of
85
<link doc="docs/http/ngx_http_fastcgi_module.xml">FastCGI</link>,
86
<link doc="docs/http/ngx_http_uwsgi_module.xml">uwsgi</link>,
87
<link doc="docs/http/ngx_http_scgi_module.xml">SCGI</link>, and
88
<link doc="docs/http/ngx_http_memcached_module.xml">memcached</link>
89
servers;
90
<link doc="docs/http/ngx_http_upstream_module.xml">load balancing
91
and fault tolerance</link>;
92
</listitem>
93
94
<listitem>
95
Modular architecture.
96
Filters include
97
<link doc="docs/http/ngx_http_gzip_module.xml">gzipping</link>,
98
byte ranges, chunked responses,
99
<link doc="docs/http/ngx_http_xslt_module.xml">XSLT</link>,
100
<link doc="docs/http/ngx_http_ssi_module.xml">SSI</link>,
101
and <link doc="docs/http/ngx_http_image_filter_module.xml">image
102
transformation</link> filter.
103
Multiple SSI inclusions within a single page can be processed in
104
parallel if they are handled by proxied or FastCGI/uwsgi/SCGI servers;
105
</listitem>
106
107
<listitem>
108
<link doc="docs/http/ngx_http_ssl_module.xml">SSL and
109
TLS SNI support</link>;
110
</listitem>
111
112
<listitem>
113
Support for <link doc="docs/http/ngx_http_v2_module.xml">HTTP/2</link>
114
with weighted and dependency-based prioritization;
115
</listitem>
116
117
<listitem>
118
Support for <link doc="docs/http/ngx_http_v3_module.xml">HTTP/3</link>.
119
</listitem>
120
121
</list>
122
</para>
123
124
</section>
125
126
127
<section id="other_http_features"
128
name="Other HTTP server features">
129
130
<para>
131
<list type="bullet">
132
133
<listitem>
134
Name-based and IP-based
135
<link doc="docs/http/request_processing.xml">virtual servers</link>;
136
</listitem>
137
138
<listitem>
139
<link doc="docs/http/ngx_http_core_module.xml"
140
id="keepalive_timeout">Keep-alive</link>
141
and pipelined connections support;
142
</listitem>
143
144
<listitem>
145
<link doc="docs/http/ngx_http_log_module.xml" id="log_format">Access
146
log formats</link>,
147
<link doc="docs/http/ngx_http_log_module.xml" id="access_log">buffered
148
log writing</link>,
149
<link doc="docs/control.xml" id="logs">fast log rotation</link>, and
150
<link doc="docs/syslog.xml">syslog logging</link>;
151
</listitem>
152
153
<listitem>
154
3xx-5xx error codes
155
<link doc="docs/http/ngx_http_core_module.xml"
156
id="error_page">redirection</link>;
157
</listitem>
158
159
<listitem>
160
The rewrite module:
161
<link doc="docs/http/ngx_http_rewrite_module.xml">URI changing
162
using regular expressions</link>;
163
</listitem>
164
165
<listitem>
166
<link doc="docs/http/ngx_http_rewrite_module.xml" id="if">Executing
167
different functions</link> depending on the
168
<link doc="docs/http/ngx_http_geo_module.xml">client address</link>;
169
</listitem>
170
171
<listitem>
172
Access control based on
173
<link doc="docs/http/ngx_http_access_module.xml">client IP address</link>,
174
<link doc="docs/http/ngx_http_auth_basic_module.xml">by password (HTTP
175
Basic authentication)</link> and by the
176
<link doc="docs/http/ngx_http_auth_request_module.xml">result of
177
subrequest</link>;
178
</listitem>
179
180
<listitem>
181
Validation of
182
<link doc="docs/http/ngx_http_referer_module.xml">HTTP referer</link>;
183
</listitem>
184
185
<listitem>
186
The <link doc="docs/http/ngx_http_dav_module.xml">PUT, DELETE, MKCOL, COPY,
187
and MOVE</link> methods;
188
</listitem>
189
190
<listitem>
191
<link doc="docs/http/ngx_http_flv_module.xml">FLV</link>
192
and
193
<link doc="docs/http/ngx_http_mp4_module.xml">MP4</link>
194
streaming;
195
</listitem>
196
197
<listitem>
198
<link doc="docs/http/ngx_http_core_module.xml"
199
id="limit_rate">Response rate limiting</link>;
200
</listitem>
201
202
<listitem>
203
Limiting the number of simultaneous
204
<link doc="docs/http/ngx_http_limit_conn_module.xml">connections</link>
205
or
206
<link doc="docs/http/ngx_http_limit_req_module.xml">requests</link>
207
coming from one address;
208
</listitem>
209
210
<listitem>
211
<link doc="docs/http/ngx_http_geoip_module.xml">IP-based geolocation</link>;
212
</listitem>
213
214
<listitem>
215
<link doc="docs/http/ngx_http_split_clients_module.xml">A/B testing</link>;
216
</listitem>
217
218
<listitem>
219
<link doc="docs/http/ngx_http_mirror_module.xml">Request mirroring</link>;
220
</listitem>
221
222
<listitem>
223
Embedded <link doc="docs/http/ngx_http_perl_module.xml">Perl</link>;
224
</listitem>
225
226
<listitem>
227
<link doc="docs/njs/index.xml">njs</link> scripting language.
228
</listitem>
229
230
</list>
231
</para>
232
233
</section>
234
235
236
<section id="mail_proxy_server_features"
237
name="Mail proxy server features">
238
239
<para>
240
<list type="bullet">
241
242
<listitem>
243
User redirection to
244
<link doc="docs/mail/ngx_mail_imap_module.xml">IMAP</link>
245
or
246
<link doc="docs/mail/ngx_mail_pop3_module.xml">POP3</link>
247
server using an external HTTP
248
<link doc="docs/mail/ngx_mail_auth_http_module.xml">authentication</link>
249
server;
250
</listitem>
251
252
<listitem>
253
User authentication using an external HTTP
254
<link doc="docs/mail/ngx_mail_auth_http_module.xml">authentication</link>
255
server and connection redirection to an internal
256
<link doc="docs/mail/ngx_mail_smtp_module.xml">SMTP</link> server;
257
</listitem>
258
259
<listitem>
260
Authentication methods:
261
262
<list type="bullet">
263
264
<listitem>
265
<link doc="docs/mail/ngx_mail_pop3_module.xml" id="pop3_auth">POP3</link>:
266
USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
267
</listitem>
268
269
<listitem>
270
<link doc="docs/mail/ngx_mail_imap_module.xml" id="imap_auth">IMAP</link>:
271
LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
272
</listitem>
273
274
<listitem>
275
<link doc="docs/mail/ngx_mail_smtp_module.xml" id="smtp_auth">SMTP</link>:
276
AUTH LOGIN/PLAIN/CRAM-MD5;
277
</listitem>
278
279
</list>
280
</listitem>
281
282
<listitem>
283
<link doc="docs/mail/ngx_mail_ssl_module.xml">SSL</link> support;
284
</listitem>
285
286
<listitem>
287
<link doc="docs/mail/ngx_mail_ssl_module.xml" id="starttls">STARTTLS
288
and STLS</link> support.
289
</listitem>
290
291
</list>
292
</para>
293
294
</section>
295
296
297
<section id="generic_proxy_server_features"
298
name="TCP/UDP proxy server features">
299
300
<para>
301
<list type="bullet">
302
303
<listitem>
304
<link doc="docs/stream/ngx_stream_proxy_module.xml">Generic proxying</link>
305
of TCP and UDP;
306
</listitem>
307
308
<listitem>
309
<link doc="docs/stream/ngx_stream_ssl_module.xml">SSL</link> and
310
TLS <link doc="docs/stream/ngx_stream_ssl_preread_module.xml">SNI</link> support
311
for TCP;
312
</listitem>
313
314
<listitem>
315
<link doc="docs/stream/ngx_stream_upstream_module.xml">Load balancing
316
and fault tolerance</link>;
317
</listitem>
318
319
<listitem>
320
Access control based on
321
<link doc="docs/stream/ngx_stream_access_module.xml">client address</link>;
322
</listitem>
323
324
<listitem>
325
Executing different functions depending on the
326
<link doc="docs/stream/ngx_stream_geo_module.xml">client address</link>;
327
</listitem>
328
329
<listitem>
330
Limiting the number of simultaneous
331
<link doc="docs/stream/ngx_stream_limit_conn_module.xml">connections</link>
332
coming from one address;
333
</listitem>
334
335
<listitem>
336
<link doc="docs/stream/ngx_stream_log_module.xml" id="log_format">Access
337
log formats</link>,
338
<link doc="docs/stream/ngx_stream_log_module.xml" id="access_log">buffered
339
log writing</link>,
340
<link doc="docs/control.xml" id="logs">fast log rotation</link>, and
341
<link doc="docs/syslog.xml">syslog logging</link>;
342
</listitem>
343
344
<listitem>
345
<link doc="docs/stream/ngx_stream_geoip_module.xml">IP-based geolocation</link>;
346
</listitem>
347
348
<listitem>
349
<link doc="docs/stream/ngx_stream_split_clients_module.xml">A/B testing</link>;
350
</listitem>
351
352
<listitem>
353
<link doc="docs/njs/index.xml">njs</link> scripting language.
354
</listitem>
355
356
</list>
357
</para>
358
359
</section>
360
361
362
<section id="architecture_and_scalability"
363
name="Architecture and scalability">
364
365
<para>
366
<list type="bullet">
367
368
<listitem>
369
One master and several worker processes;
370
worker processes run under an unprivileged user;
371
</listitem>
372
373
<listitem>
374
<link doc="docs/example.xml">Flexible configuration</link>;
375
</listitem>
376
377
<listitem>
378
<link doc="docs/control.xml" id="reconfiguration">Reconfiguration</link>
379
and <link doc="docs/control.xml" id="upgrade">upgrade of an
380
executable</link> without interruption of the client servicing;
381
</listitem>
382
383
<listitem>
384
<link doc="docs/events.xml">Support</link> for
385
kqueue (FreeBSD 4.1+),
386
epoll (Linux 2.6+),
387
/dev/poll (Solaris 7 11/99+), event ports (Solaris 10),
388
select, and poll;
389
</listitem>
390
391
<listitem>
392
The support of the various kqueue features including EV_CLEAR, EV_DISABLE
393
(to temporarily disable events), NOTE_LOWAT, EV_EOF, number of available data,
394
error codes;
395
</listitem>
396
397
<listitem>
398
The support of various epoll features including
399
EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) and
400
EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);
401
</listitem>
402
403
<listitem>
404
sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+),
405
and sendfilev (Solaris 8 7/01+) support;
406
</listitem>
407
408
<listitem>
409
<link doc="docs/http/ngx_http_core_module.xml" id="aio">File AIO</link>
410
(FreeBSD 4.3+, Linux 2.6.22+);
411
</listitem>
412
413
<listitem>
414
<link doc="docs/http/ngx_http_core_module.xml" id="directio">DIRECTIO</link>
415
(FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
416
</listitem>
417
418
<listitem>
419
Accept-filters (FreeBSD 4.1+, NetBSD 5.0+) and TCP_DEFER_ACCEPT (Linux 2.4+)
420
<link doc="docs/http/ngx_http_core_module.xml" id="listen">support</link>;
421
</listitem>
422
423
<listitem>
424
10,000 inactive HTTP keep-alive connections take about 2.5M memory;
425
</listitem>
426
427
<listitem>
428
Data copy operations are kept to a minimum.
429
</listitem>
430
431
</list>
432
</para>
433
434
</section>
435
436
437
<section id="tested_os_and_platforms"
438
name="Tested OS and platforms">
439
440
<para>
441
<list type="bullet">
442
443
<listitem>
444
FreeBSD 3&mdash;12 / i386;
445
FreeBSD 5&mdash;12 / amd64;
446
FreeBSD 11 / ppc;
447
FreeBSD 12 / ppc64;
448
</listitem>
449
450
<listitem>
451
Linux 2.2&mdash;4 / i386;
452
Linux 2.6&mdash;5 / amd64;
453
Linux 3&mdash;4 / armv6l, armv7l, aarch64, ppc64le;
454
Linux 4&mdash;5 / s390x;
455
</listitem>
456
457
<listitem>
458
Solaris 9 / i386, sun4u;
459
Solaris 10 / i386, amd64, sun4v;
460
Solaris 11 / x86;
461
</listitem>
462
463
<listitem>
464
AIX 7.1 / powerpc;
465
</listitem>
466
467
<listitem>
468
HP-UX 11.31 / ia64;
469
</listitem>
470
471
<listitem>
472
macOS / ppc, i386, x86_64;
473
</listitem>
474
475
<listitem>
476
Windows XP,
477
Windows Server 2003,
478
Windows 7,
479
Windows 10,
480
Windows 11.
481
</listitem>
482
483
</list>
484
</para>
485
486
</section>
487
488
</article>
489
490