comparison text/en/CHANGES-1.26 @ 3071:036ded8db5df

freenginx-1.26.0
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 09 Apr 2024 03:11:46 +0300
parents text/en/CHANGES@619538194516
children
comparison
equal deleted inserted replaced
3070:619538194516 3071:036ded8db5df
1
2 Changes with freenginx 1.26.0 09 Apr 2024
3
4 *) 1.26.x stable branch.
5
6
7 Changes with freenginx 1.25.5 02 Apr 2024
8
9 *) Change: MIME type for the "bmp" extension has been changed to
10 "image/bmp", for the "rar" extension to "application/vnd.rar", and
11 the "deb" and "udeb" extensions now use the
12 "application/vnd.debian.binary-package" MIME type.
13 Thanks to Yuriy Izorkin.
14
15 *) Change: the "client_max_body_size" directive is now used to limit
16 total size of ignored chunk extensions and trailer headers when
17 reading a request body using chunked transfer encoding.
18 Thanks to Bartek Nowotarski.
19
20 *) Change: now at most one empty line is allowed before a request.
21
22 *) Feature: logging to syslog errors are now reported at most once per
23 second.
24
25 *) Feature: the "max_commands" directive in the mail proxy module.
26
27 *) Bugfix: incorrect server name might be returned in responses when
28 using the "server_tokens off" directive.
29 Thanks to Tatsuya Kaneko and Antanas Patašius.
30
31 *) Bugfix: when reading a request body from a fast connection reading
32 for a long time was possible.
33
34
35 Changes with freenginx 1.25.4 20 Feb 2024
36
37 *) Change: now the "freenginx" name is used in responses.
38
39 *) Bugfix: "open socket left" alerts might appear in logs during worker
40 processes shutdown when using AIO.
41
42 *) Bugfix: a segmentation fault might occur in a worker process if AIO
43 was used in subrequests.
44
45 *) Bugfix: a segmentation fault might occur in a worker process if the
46 "image_filter" directive was used, and errors with code 415 were
47 redirected with the "error_page" directive.
48
49 *) Bugfix: a segmentation fault might occur in a worker process when
50 handling cached responses with the "X-Accel-Redirect" header.
51 Thanks to Jiří Setnička.
52
53 *) Bugfix: a segmentation fault might occur in a worker process when
54 using HTTP/3.
55
56 *) Bugfixes and improvements in HTTP/3.
57
58
59 Changes with nginx 1.25.3 24 Oct 2023
60
61 *) Change: improved detection of misbehaving clients when using HTTP/2.
62
63 *) Feature: startup speedup when using a large number of locations.
64 Thanks to Yusuke Nojima.
65
66 *) Bugfix: a segmentation fault might occur in a worker process when
67 using HTTP/2 without SSL; the bug had appeared in 1.25.1.
68
69 *) Bugfix: the "Status" backend response header line with an empty
70 reason phrase was handled incorrectly.
71
72 *) Bugfix: memory leak during reconfiguration when using the PCRE2
73 library.
74 Thanks to ZhenZhong Wu.
75
76 *) Bugfixes and improvements in HTTP/3.
77
78
79 Changes with nginx 1.25.2 15 Aug 2023
80
81 *) Feature: path MTU discovery when using HTTP/3.
82
83 *) Feature: TLS_AES_128_CCM_SHA256 cipher suite support when using
84 HTTP/3.
85
86 *) Change: now nginx uses appname "nginx" when loading OpenSSL
87 configuration.
88
89 *) Change: now nginx does not try to load OpenSSL configuration if the
90 --with-openssl option was used to built OpenSSL and the OPENSSL_CONF
91 environment variable is not set.
92
93 *) Bugfix: in the $body_bytes_sent variable when using HTTP/3.
94
95 *) Bugfix: in HTTP/3.
96
97
98 Changes with nginx 1.25.1 13 Jun 2023
99
100 *) Feature: the "http2" directive, which enables HTTP/2 on a per-server
101 basis; the "http2" parameter of the "listen" directive is now
102 deprecated.
103
104 *) Change: HTTP/2 server push support has been removed.
105
106 *) Change: the deprecated "ssl" directive is not supported anymore.
107
108 *) Bugfix: in HTTP/3 when using OpenSSL.
109
110
111 Changes with nginx 1.25.0 23 May 2023
112
113 *) Feature: experimental HTTP/3 support.
114
115
116 Changes with nginx 1.23.4 28 Mar 2023
117
118 *) Change: now TLSv1.3 protocol is enabled by default.
119
120 *) Change: now nginx issues a warning if protocol parameters of a
121 listening socket are redefined.
122
123 *) Change: now nginx closes connections with lingering if pipelining was
124 used by the client.
125
126 *) Feature: byte ranges support in the ngx_http_gzip_static_module.
127
128 *) Bugfix: port ranges in the "listen" directive did not work; the bug
129 had appeared in 1.23.3.
130 Thanks to Valentin Bartenev.
131
132 *) Bugfix: incorrect location might be chosen to process a request if a
133 prefix location longer than 255 characters was used in the
134 configuration.
135
136 *) Bugfix: non-ASCII characters in file names on Windows were not
137 supported by the ngx_http_autoindex_module, the ngx_http_dav_module,
138 and the "include" directive.
139
140 *) Change: the logging level of the "data length too long", "length too
141 short", "bad legacy version", "no shared signature algorithms", "bad
142 digest length", "missing sigalgs extension", "encrypted length too
143 long", "bad length", "bad key update", "mixed handshake and non
144 handshake data", "ccs received early", "data between ccs and
145 finished", "packet length too long", "too many warn alerts", "record
146 too small", and "got a fin before a ccs" SSL errors has been lowered
147 from "crit" to "info".
148
149 *) Bugfix: a socket leak might occur when using HTTP/2 and the
150 "error_page" directive to redirect errors with code 400.
151
152 *) Bugfix: messages about logging to syslog errors did not contain
153 information that the errors happened while logging to syslog.
154 Thanks to Safar Safarly.
155
156 *) Workaround: "gzip filter failed to use preallocated memory" alerts
157 appeared in logs when using zlib-ng.
158
159 *) Bugfix: in the mail proxy server.
160
161
162 Changes with nginx 1.23.3 13 Dec 2022
163
164 *) Bugfix: an error might occur when reading PROXY protocol version 2
165 header with large number of TLVs.
166
167 *) Bugfix: a segmentation fault might occur in a worker process if SSI
168 was used to process subrequests created by other modules.
169 Thanks to Ciel Zhao.
170
171 *) Workaround: when a hostname used in the "listen" directive resolves
172 to multiple addresses, nginx now ignores duplicates within these
173 addresses.
174
175 *) Bugfix: nginx might hog CPU during unbuffered proxying if SSL
176 connections to backends were used.
177
178
179 Changes with nginx 1.23.2 19 Oct 2022
180
181 *) Security: processing of a specially crafted mp4 file by the
182 ngx_http_mp4_module might cause a worker process crash, worker
183 process memory disclosure, or might have potential other impact
184 (CVE-2022-41741, CVE-2022-41742).
185
186 *) Feature: the "$proxy_protocol_tlv_..." variables.
187
188 *) Feature: TLS session tickets encryption keys are now automatically
189 rotated when using shared memory in the "ssl_session_cache"
190 directive.
191
192 *) Change: the logging level of the "bad record type" SSL errors has
193 been lowered from "crit" to "info".
194 Thanks to Murilo Andrade.
195
196 *) Change: now when using shared memory in the "ssl_session_cache"
197 directive the "could not allocate new session" errors are logged at
198 the "warn" level instead of "alert" and not more often than once per
199 second.
200
201 *) Bugfix: nginx/Windows could not be built with OpenSSL 3.0.x.
202
203 *) Bugfix: in logging of the PROXY protocol errors.
204 Thanks to Sergey Brester.
205
206 *) Workaround: shared memory from the "ssl_session_cache" directive was
207 spent on sessions using TLS session tickets when using TLSv1.3 with
208 OpenSSL.
209
210 *) Workaround: timeout specified with the "ssl_session_timeout"
211 directive did not work when using TLSv1.3 with OpenSSL or BoringSSL.
212
213
214 Changes with nginx 1.23.1 19 Jul 2022
215
216 *) Feature: memory usage optimization in configurations with SSL
217 proxying.
218
219 *) Feature: looking up of IPv4 addresses while resolving now can be
220 disabled with the "ipv4=off" parameter of the "resolver" directive.
221
222 *) Change: the logging level of the "bad key share", "bad extension",
223 "bad cipher", and "bad ecpoint" SSL errors has been lowered from
224 "crit" to "info".
225
226 *) Bugfix: while returning byte ranges nginx did not remove the
227 "Content-Range" header line if it was present in the original backend
228 response.
229
230 *) Bugfix: a proxied response might be truncated during reconfiguration
231 on Linux; the bug had appeared in 1.17.5.
232
233
234 Changes with nginx 1.23.0 21 Jun 2022
235
236 *) Change in internal API: now header lines are represented as linked
237 lists.
238
239 *) Change: now nginx combines arbitrary header lines with identical
240 names when sending to FastCGI, SCGI, and uwsgi backends, in the
241 $r->header_in() method of the ngx_http_perl_module, and during lookup
242 of the "$http_...", "$sent_http_...", "$sent_trailer_...",
243 "$upstream_http_...", and "$upstream_trailer_..." variables.
244
245 *) Bugfix: if there were multiple "Vary" header lines in the backend
246 response, nginx only used the last of them when caching.
247
248 *) Bugfix: if there were multiple "WWW-Authenticate" header lines in the
249 backend response and errors with code 401 were intercepted or the
250 "auth_request" directive was used, nginx only sent the first of the
251 header lines to the client.
252
253 *) Change: the logging level of the "application data after close
254 notify" SSL errors has been lowered from "crit" to "info".
255
256 *) Bugfix: connections might hang if nginx was built on Linux 2.6.17 or
257 newer, but was used on systems without EPOLLRDHUP support, notably
258 with epoll emulation layers; the bug had appeared in 1.17.5.
259 Thanks to Marcus Ball.
260
261 *) Bugfix: nginx did not cache the response if the "Expires" response
262 header line disabled caching, but following "Cache-Control" header
263 line enabled caching.
264
265
266 Changes with nginx 1.21.6 25 Jan 2022
267
268 *) Bugfix: when using EPOLLEXCLUSIVE on Linux client connections were
269 unevenly distributed among worker processes.
270
271 *) Bugfix: nginx returned the "Connection: keep-alive" header line in
272 responses during graceful shutdown of old worker processes.
273
274 *) Bugfix: in the "ssl_session_ticket_key" when using TLSv1.3.
275
276
277 Changes with nginx 1.21.5 28 Dec 2021
278
279 *) Change: now nginx is built with the PCRE2 library by default.
280
281 *) Change: now nginx always uses sendfile(SF_NODISKIO) on FreeBSD.
282
283 *) Feature: support for sendfile(SF_NOCACHE) on FreeBSD.
284
285 *) Feature: the $ssl_curve variable.
286
287 *) Bugfix: connections might hang when using HTTP/2 without SSL with the
288 "sendfile" and "aio" directives.
289
290
291 Changes with nginx 1.21.4 02 Nov 2021
292
293 *) Change: support for NPN instead of ALPN to establish HTTP/2
294 connections has been removed.
295
296 *) Change: now nginx rejects SSL connections if ALPN is used by the
297 client, but no supported protocols can be negotiated.
298
299 *) Change: the default value of the "sendfile_max_chunk" directive was
300 changed to 2 megabytes.
301
302 *) Feature: the "proxy_half_close" directive in the stream module.
303
304 *) Feature: the "ssl_alpn" directive in the stream module.
305
306 *) Feature: the $ssl_alpn_protocol variable.
307
308 *) Feature: support for SSL_sendfile() when using OpenSSL 3.0.
309
310 *) Feature: the "mp4_start_key_frame" directive in the
311 ngx_http_mp4_module.
312 Thanks to Tracey Jaquith.
313
314 *) Bugfix: in the $content_length variable when using chunked transfer
315 encoding.
316
317 *) Bugfix: after receiving a response with incorrect length from a
318 proxied backend nginx might nevertheless cache the connection.
319 Thanks to Awdhesh Mathpal.
320
321 *) Bugfix: invalid headers from backends were logged at the "info" level
322 instead of "error"; the bug had appeared in 1.21.1.
323
324 *) Bugfix: requests might hang when using HTTP/2 and the "aio_write"
325 directive.
326
327
328 Changes with nginx 1.21.3 07 Sep 2021
329
330 *) Change: optimization of client request body reading when using
331 HTTP/2.
332
333 *) Bugfix: in request body filters internal API when using HTTP/2 and
334 buffering of the data being processed.
335
336
337 Changes with nginx 1.21.2 31 Aug 2021
338
339 *) Change: now nginx rejects HTTP/1.0 requests with the
340 "Transfer-Encoding" header line.
341
342 *) Change: export ciphers are no longer supported.
343
344 *) Feature: OpenSSL 3.0 compatibility.
345
346 *) Feature: the "Auth-SSL-Protocol" and "Auth-SSL-Cipher" header lines
347 are now passed to the mail proxy authentication server.
348 Thanks to Rob Mueller.
349
350 *) Feature: request body filters API now permits buffering of the data
351 being processed.
352
353 *) Bugfix: backend SSL connections in the stream module might hang after
354 an SSL handshake.
355
356 *) Bugfix: the security level, which is available in OpenSSL 1.1.0 or
357 newer, did not affect loading of the server certificates when set
358 with "@SECLEVEL=N" in the "ssl_ciphers" directive.
359
360 *) Bugfix: SSL connections with gRPC backends might hang if select,
361 poll, or /dev/poll methods were used.
362
363 *) Bugfix: when using HTTP/2 client request body was always written to
364 disk if the "Content-Length" header line was not present in the
365 request.
366
367
368 Changes with nginx 1.21.1 06 Jul 2021
369
370 *) Change: now nginx always returns an error for the CONNECT method.
371
372 *) Change: now nginx always returns an error if both "Content-Length"
373 and "Transfer-Encoding" header lines are present in the request.
374
375 *) Change: now nginx always returns an error if spaces or control
376 characters are used in the request line.
377
378 *) Change: now nginx always returns an error if spaces or control
379 characters are used in a header name.
380
381 *) Change: now nginx always returns an error if spaces or control
382 characters are used in the "Host" request header line.
383
384 *) Change: optimization of configuration testing when using many
385 listening sockets.
386
387 *) Bugfix: nginx did not escape """, "<", ">", "\", "^", "`", "{", "|",
388 and "}" characters when proxying with changed URI.
389
390 *) Bugfix: SSL variables might be empty when used in logs; the bug had
391 appeared in 1.19.5.
392
393 *) Bugfix: keepalive connections with gRPC backends might not be closed
394 after receiving a GOAWAY frame.
395
396 *) Bugfix: reduced memory consumption for long-lived requests when
397 proxying with more than 64 buffers.
398
399
400 Changes with nginx 1.21.0 25 May 2021
401
402 *) Security: 1-byte memory overwrite might occur during DNS server
403 response processing if the "resolver" directive was used, allowing an
404 attacker who is able to forge UDP packets from the DNS server to
405 cause worker process crash or, potentially, arbitrary code execution
406 (CVE-2021-23017).
407
408 *) Feature: variables support in the "proxy_ssl_certificate",
409 "proxy_ssl_certificate_key" "grpc_ssl_certificate",
410 "grpc_ssl_certificate_key", "uwsgi_ssl_certificate", and
411 "uwsgi_ssl_certificate_key" directives.
412
413 *) Feature: the "max_errors" directive in the mail proxy module.
414
415 *) Feature: the mail proxy module supports POP3 and IMAP pipelining.
416
417 *) Feature: the "fastopen" parameter of the "listen" directive in the
418 stream module.
419 Thanks to Anbang Wen.
420
421 *) Bugfix: special characters were not escaped during automatic redirect
422 with appended trailing slash.
423
424 *) Bugfix: connections with clients in the mail proxy module might be
425 closed unexpectedly when using SMTP pipelining.
426
427
428 Changes with nginx 1.19.10 13 Apr 2021
429
430 *) Change: the default value of the "keepalive_requests" directive was
431 changed to 1000.
432
433 *) Feature: the "keepalive_time" directive.
434
435 *) Feature: the $connection_time variable.
436
437 *) Workaround: "gzip filter failed to use preallocated memory" alerts
438 appeared in logs when using zlib-ng.
439
440
441 Changes with nginx 1.19.9 30 Mar 2021
442
443 *) Bugfix: nginx could not be built with the mail proxy module, but
444 without the ngx_mail_ssl_module; the bug had appeared in 1.19.8.
445
446 *) Bugfix: "upstream sent response body larger than indicated content
447 length" errors might occur when working with gRPC backends; the bug
448 had appeared in 1.19.1.
449
450 *) Bugfix: nginx might not close a connection till keepalive timeout
451 expiration if the connection was closed by the client while
452 discarding the request body.
453
454 *) Bugfix: nginx might not detect that a connection was already closed
455 by the client when waiting for auth_delay or limit_req delay, or when
456 working with backends.
457
458 *) Bugfix: in the eventport method.
459
460
461 Changes with nginx 1.19.8 09 Mar 2021
462
463 *) Feature: flags in the "proxy_cookie_flags" directive can now contain
464 variables.
465
466 *) Feature: the "proxy_protocol" parameter of the "listen" directive,
467 the "proxy_protocol" and "set_real_ip_from" directives in mail proxy.
468
469 *) Bugfix: HTTP/2 connections were immediately closed when using
470 "keepalive_timeout 0"; the bug had appeared in 1.19.7.
471
472 *) Bugfix: some errors were logged as unknown if nginx was built with
473 glibc 2.32.
474
475 *) Bugfix: in the eventport method.
476
477
478 Changes with nginx 1.19.7 16 Feb 2021
479
480 *) Change: connections handling in HTTP/2 has been changed to better
481 match HTTP/1.x; the "http2_recv_timeout", "http2_idle_timeout", and
482 "http2_max_requests" directives have been removed, the
483 "keepalive_timeout" and "keepalive_requests" directives should be
484 used instead.
485
486 *) Change: the "http2_max_field_size" and "http2_max_header_size"
487 directives have been removed, the "large_client_header_buffers"
488 directive should be used instead.
489
490 *) Feature: now, if free worker connections are exhausted, nginx starts
491 closing not only keepalive connections, but also connections in
492 lingering close.
493
494 *) Bugfix: "zero size buf in output" alerts might appear in logs if an
495 upstream server returned an incorrect response during unbuffered
496 proxying; the bug had appeared in 1.19.1.
497
498 *) Bugfix: HEAD requests were handled incorrectly if the "return"
499 directive was used with the "image_filter" or "xslt_stylesheet"
500 directives.
501
502 *) Bugfix: in the "add_trailer" directive.
503
504
505 Changes with nginx 1.19.6 15 Dec 2020
506
507 *) Bugfix: "no live upstreams" errors if a "server" inside "upstream"
508 block was marked as "down".
509
510 *) Bugfix: a segmentation fault might occur in a worker process if HTTPS
511 was used; the bug had appeared in 1.19.5.
512
513 *) Bugfix: nginx returned the 400 response on requests like
514 "GET http://example.com?args HTTP/1.0".
515
516 *) Bugfix: in the ngx_http_flv_module and ngx_http_mp4_module.
517 Thanks to Chris Newton.
518
519
520 Changes with nginx 1.19.5 24 Nov 2020
521
522 *) Feature: the -e switch.
523
524 *) Feature: the same source files can now be specified in different
525 modules while building addon modules.
526
527 *) Bugfix: SSL shutdown did not work when lingering close was used.
528
529 *) Bugfix: "upstream sent frame for closed stream" errors might occur
530 when working with gRPC backends.
531
532 *) Bugfix: in request body filters internal API.
533
534
535 Changes with nginx 1.19.4 27 Oct 2020
536
537 *) Feature: the "ssl_conf_command", "proxy_ssl_conf_command",
538 "grpc_ssl_conf_command", and "uwsgi_ssl_conf_command" directives.
539
540 *) Feature: the "ssl_reject_handshake" directive.
541
542 *) Feature: the "proxy_smtp_auth" directive in mail proxy.
543
544
545 Changes with nginx 1.19.3 29 Sep 2020
546
547 *) Feature: the ngx_stream_set_module.
548
549 *) Feature: the "proxy_cookie_flags" directive.
550
551 *) Feature: the "userid_flags" directive.
552
553 *) Bugfix: the "stale-if-error" cache control extension was erroneously
554 applied if backend returned a response with status code 500, 502,
555 503, 504, 403, 404, or 429.
556
557 *) Bugfix: "[crit] cache file ... has too long header" messages might
558 appear in logs if caching was used and the backend returned responses
559 with the "Vary" header line.
560
561 *) Workaround: "[crit] SSL_write() failed" messages might appear in logs
562 when using OpenSSL 1.1.1.
563
564 *) Bugfix: "SSL_shutdown() failed (SSL: ... bad write retry)" messages
565 might appear in logs; the bug had appeared in 1.19.2.
566
567 *) Bugfix: a segmentation fault might occur in a worker process when
568 using HTTP/2 if errors with code 400 were redirected to a proxied
569 location using the "error_page" directive.
570
571 *) Bugfix: socket leak when using HTTP/2 and subrequests in the njs
572 module.
573
574
575 Changes with nginx 1.19.2 11 Aug 2020
576
577 *) Change: now nginx starts closing keepalive connections before all
578 free worker connections are exhausted, and logs a warning about this
579 to the error log.
580
581 *) Change: optimization of client request body reading when using
582 chunked transfer encoding.
583
584 *) Bugfix: memory leak if the "ssl_ocsp" directive was used.
585
586 *) Bugfix: "zero size buf in output" alerts might appear in logs if a
587 FastCGI server returned an incorrect response; the bug had appeared
588 in 1.19.1.
589
590 *) Bugfix: a segmentation fault might occur in a worker process if
591 different large_client_header_buffers sizes were used in different
592 virtual servers.
593
594 *) Bugfix: SSL shutdown might not work.
595
596 *) Bugfix: "SSL_shutdown() failed (SSL: ... bad write retry)" messages
597 might appear in logs.
598
599 *) Bugfix: in the ngx_http_slice_module.
600
601 *) Bugfix: in the ngx_http_xslt_filter_module.
602
603
604 Changes with nginx 1.19.1 07 Jul 2020
605
606 *) Change: the "lingering_close", "lingering_time", and
607 "lingering_timeout" directives now work when using HTTP/2.
608
609 *) Change: now extra data sent by a backend are always discarded.
610
611 *) Change: now after receiving a too short response from a FastCGI
612 server nginx tries to send the available part of the response to the
613 client, and then closes the client connection.
614
615 *) Change: now after receiving a response with incorrect length from a
616 gRPC backend nginx stops response processing with an error.
617
618 *) Feature: the "min_free" parameter of the "proxy_cache_path",
619 "fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path"
620 directives.
621 Thanks to Adam Bambuch.
622
623 *) Bugfix: nginx did not delete unix domain listen sockets during
624 graceful shutdown on the SIGQUIT signal.
625
626 *) Bugfix: zero length UDP datagrams were not proxied.
627
628 *) Bugfix: proxying to uwsgi backends using SSL might not work.
629 Thanks to Guanzhong Chen.
630
631 *) Bugfix: in error handling when using the "ssl_ocsp" directive.
632
633 *) Bugfix: on XFS and NFS file systems disk cache size might be
634 calculated incorrectly.
635
636 *) Bugfix: "negative size buf in writer" alerts might appear in logs if
637 a memcached server returned a malformed response.
638
639
640 Changes with nginx 1.19.0 26 May 2020
641
642 *) Feature: client certificate validation with OCSP.
643
644 *) Bugfix: "upstream sent frame for closed stream" errors might occur
645 when working with gRPC backends.
646
647 *) Bugfix: OCSP stapling might not work if the "resolver" directive was
648 not specified.
649
650 *) Bugfix: connections with incorrect HTTP/2 preface were not logged.
651
652
653 Changes with nginx 1.17.10 14 Apr 2020
654
655 *) Feature: the "auth_delay" directive.
656
657
658 Changes with nginx 1.17.9 03 Mar 2020
659
660 *) Change: now nginx does not allow several "Host" request header lines.
661
662 *) Bugfix: nginx ignored additional "Transfer-Encoding" request header
663 lines.
664
665 *) Bugfix: socket leak when using HTTP/2.
666
667 *) Bugfix: a segmentation fault might occur in a worker process if OCSP
668 stapling was used.
669
670 *) Bugfix: in the ngx_http_mp4_module.
671
672 *) Bugfix: nginx used status code 494 instead of 400 if errors with code
673 494 were redirected with the "error_page" directive.
674
675 *) Bugfix: socket leak when using subrequests in the njs module and the
676 "aio" directive.
677
678
679 Changes with nginx 1.17.8 21 Jan 2020
680
681 *) Feature: variables support in the "grpc_pass" directive.
682
683 *) Bugfix: a timeout might occur while handling pipelined requests in an
684 SSL connection; the bug had appeared in 1.17.5.
685
686 *) Bugfix: in the "debug_points" directive when using HTTP/2.
687 Thanks to Daniil Bondarev.
688
689
690 Changes with nginx 1.17.7 24 Dec 2019
691
692 *) Bugfix: a segmentation fault might occur on start or during
693 reconfiguration if the "rewrite" directive with an empty replacement
694 string was used in the configuration.
695
696 *) Bugfix: a segmentation fault might occur in a worker process if the
697 "break" directive was used with the "alias" directive or with the
698 "proxy_pass" directive with a URI.
699
700 *) Bugfix: the "Location" response header line might contain garbage if
701 the request URI was rewritten to the one containing a null character.
702
703 *) Bugfix: requests with bodies were handled incorrectly when returning
704 redirections with the "error_page" directive; the bug had appeared in
705 0.7.12.
706
707 *) Bugfix: socket leak when using HTTP/2.
708
709 *) Bugfix: a timeout might occur while handling pipelined requests in an
710 SSL connection; the bug had appeared in 1.17.5.
711
712 *) Bugfix: in the ngx_http_dav_module.
713
714
715 Changes with nginx 1.17.6 19 Nov 2019
716
717 *) Feature: the $proxy_protocol_server_addr and
718 $proxy_protocol_server_port variables.
719
720 *) Feature: the "limit_conn_dry_run" directive.
721
722 *) Feature: the $limit_req_status and $limit_conn_status variables.
723
724
725 Changes with nginx 1.17.5 22 Oct 2019
726
727 *) Feature: now nginx uses ioctl(FIONREAD), if available, to avoid
728 reading from a fast connection for a long time.
729
730 *) Bugfix: incomplete escaped characters at the end of the request URI
731 were ignored.
732
733 *) Bugfix: "/." and "/.." at the end of the request URI were not
734 normalized.
735
736 *) Bugfix: in the "merge_slashes" directive.
737
738 *) Bugfix: in the "ignore_invalid_headers" directive.
739 Thanks to Alan Kemp.
740
741 *) Bugfix: nginx could not be built with MinGW-w64 gcc 8.1 or newer.
742
743
744 Changes with nginx 1.17.4 24 Sep 2019
745
746 *) Change: better detection of incorrect client behavior in HTTP/2.
747
748 *) Change: in handling of not fully read client request body when
749 returning errors in HTTP/2.
750
751 *) Bugfix: the "worker_shutdown_timeout" directive might not work when
752 using HTTP/2.
753
754 *) Bugfix: a segmentation fault might occur in a worker process when
755 using HTTP/2 and the "proxy_request_buffering" directive.
756
757 *) Bugfix: the ECONNABORTED error log level was "crit" instead of
758 "error" on Windows when using SSL.
759
760 *) Bugfix: nginx ignored extra data when using chunked transfer
761 encoding.
762
763 *) Bugfix: nginx always returned the 500 error if the "return" directive
764 was used and an error occurred during reading client request body.
765
766 *) Bugfix: in memory allocation error handling.
767
768
769 Changes with nginx 1.17.3 13 Aug 2019
770
771 *) Security: when using HTTP/2 a client might cause excessive memory
772 consumption and CPU usage (CVE-2019-9511, CVE-2019-9513,
773 CVE-2019-9516).
774
775 *) Bugfix: "zero size buf" alerts might appear in logs when using
776 gzipping; the bug had appeared in 1.17.2.
777
778 *) Bugfix: a segmentation fault might occur in a worker process if the
779 "resolver" directive was used in SMTP proxy.
780
781
782 Changes with nginx 1.17.2 23 Jul 2019
783
784 *) Change: minimum supported zlib version is 1.2.0.4.
785 Thanks to Ilya Leoshkevich.
786
787 *) Change: the $r->internal_redirect() embedded perl method now expects
788 escaped URIs.
789
790 *) Feature: it is now possible to switch to a named location using the
791 $r->internal_redirect() embedded perl method.
792
793 *) Bugfix: in error handling in embedded perl.
794
795 *) Bugfix: a segmentation fault might occur on start or during
796 reconfiguration if hash bucket size larger than 64 kilobytes was used
797 in the configuration.
798
799 *) Bugfix: nginx might hog CPU during unbuffered proxying and when
800 proxying WebSocket connections if the select, poll, or /dev/poll
801 methods were used.
802
803 *) Bugfix: in the ngx_http_xslt_filter_module.
804
805 *) Bugfix: in the ngx_http_ssi_filter_module.
806
807
808 Changes with nginx 1.17.1 25 Jun 2019
809
810 *) Feature: the "limit_req_dry_run" directive.
811
812 *) Feature: when using the "hash" directive inside the "upstream" block
813 an empty hash key now triggers round-robin balancing.
814 Thanks to Niklas Keller.
815
816 *) Bugfix: a segmentation fault might occur in a worker process if
817 caching was used along with the "image_filter" directive, and errors
818 with code 415 were redirected with the "error_page" directive; the
819 bug had appeared in 1.11.10.
820
821 *) Bugfix: a segmentation fault might occur in a worker process if
822 embedded perl was used; the bug had appeared in 1.7.3.
823
824
825 Changes with nginx 1.17.0 21 May 2019
826
827 *) Feature: variables support in the "limit_rate" and "limit_rate_after"
828 directives.
829
830 *) Feature: variables support in the "proxy_upload_rate" and
831 "proxy_download_rate" directives in the stream module.
832
833 *) Change: minimum supported OpenSSL version is 0.9.8.
834
835 *) Change: now the postpone filter is always built.
836
837 *) Bugfix: the "include" directive did not work inside the "if" and
838 "limit_except" blocks.
839
840 *) Bugfix: in byte ranges processing.
841
842
843 Changes with nginx 1.15.12 16 Apr 2019
844
845 *) Bugfix: a segmentation fault might occur in a worker process if
846 variables were used in the "ssl_certificate" or "ssl_certificate_key"
847 directives and OCSP stapling was enabled.
848
849
850 Changes with nginx 1.15.11 09 Apr 2019
851
852 *) Bugfix: in the "ssl_stapling_file" directive on Windows.
853
854
855 Changes with nginx 1.15.10 26 Mar 2019
856
857 *) Change: when using a hostname in the "listen" directive nginx now
858 creates listening sockets for all addresses the hostname resolves to
859 (previously, only the first address was used).
860
861 *) Feature: port ranges in the "listen" directive.
862
863 *) Feature: loading of SSL certificates and secret keys from variables.
864
865 *) Workaround: the $ssl_server_name variable might be empty when using
866 OpenSSL 1.1.1.
867
868 *) Bugfix: nginx/Windows could not be built with Visual Studio 2015 or
869 newer; the bug had appeared in 1.15.9.
870
871
872 Changes with nginx 1.15.9 26 Feb 2019
873
874 *) Feature: variables support in the "ssl_certificate" and
875 "ssl_certificate_key" directives.
876
877 *) Feature: the "poll" method is now available on Windows when using
878 Windows Vista or newer.
879
880 *) Bugfix: if the "select" method was used on Windows and an error
881 occurred while establishing a backend connection, nginx waited for
882 the connection establishment timeout to expire.
883
884 *) Bugfix: the "proxy_upload_rate" and "proxy_download_rate" directives
885 in the stream module worked incorrectly when proxying UDP datagrams.
886
887
888 Changes with nginx 1.15.8 25 Dec 2018
889
890 *) Feature: the $upstream_bytes_sent variable.
891 Thanks to Piotr Sikora.
892
893 *) Feature: new directives in vim syntax highlighting scripts.
894 Thanks to Gena Makhomed.
895
896 *) Bugfix: in the "proxy_cache_background_update" directive.
897
898 *) Bugfix: in the "geo" directive when using unix domain listen sockets.
899
900 *) Workaround: the "ignoring stale global SSL error ... bad length"
901 alerts might appear in logs when using the "ssl_early_data" directive
902 with OpenSSL.
903
904 *) Bugfix: in nginx/Windows.
905
906 *) Bugfix: in the ngx_http_autoindex_module on 32-bit platforms.
907
908
909 Changes with nginx 1.15.7 27 Nov 2018
910
911 *) Feature: the "proxy_requests" directive in the stream module.
912
913 *) Feature: the "delay" parameter of the "limit_req" directive.
914 Thanks to Vladislav Shabanov and Peter Shchuchkin.
915
916 *) Bugfix: memory leak on errors during reconfiguration.
917
918 *) Bugfix: in the $upstream_response_time, $upstream_connect_time, and
919 $upstream_header_time variables.
920
921 *) Bugfix: a segmentation fault might occur in a worker process if the
922 ngx_http_mp4_module was used on 32-bit platforms.
923
924
925 Changes with nginx 1.15.6 06 Nov 2018
926
927 *) Security: when using HTTP/2 a client might cause excessive memory
928 consumption (CVE-2018-16843) and CPU usage (CVE-2018-16844).
929
930 *) Security: processing of a specially crafted mp4 file with the
931 ngx_http_mp4_module might result in worker process memory disclosure
932 (CVE-2018-16845).
933
934 *) Feature: the "proxy_socket_keepalive", "fastcgi_socket_keepalive",
935 "grpc_socket_keepalive", "memcached_socket_keepalive",
936 "scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives.
937
938 *) Bugfix: if nginx was built with OpenSSL 1.1.0 and used with OpenSSL
939 1.1.1, the TLS 1.3 protocol was always enabled.
940
941 *) Bugfix: working with gRPC backends might result in excessive memory
942 consumption.
943
944
945 Changes with nginx 1.15.5 02 Oct 2018
946
947 *) Bugfix: a segmentation fault might occur in a worker process when
948 using OpenSSL 1.1.0h or newer; the bug had appeared in 1.15.4.
949
950 *) Bugfix: of minor potential bugs.
951
952
953 Changes with nginx 1.15.4 25 Sep 2018
954
955 *) Feature: now the "ssl_early_data" directive can be used with OpenSSL.
956
957 *) Bugfix: in the ngx_http_uwsgi_module.
958 Thanks to Chris Caputo.
959
960 *) Bugfix: connections with some gRPC backends might not be cached when
961 using the "keepalive" directive.
962
963 *) Bugfix: a socket leak might occur when using the "error_page"
964 directive to redirect early request processing errors, notably errors
965 with code 400.
966
967 *) Bugfix: the "return" directive did not change the response code when
968 returning errors if the request was redirected by the "error_page"
969 directive.
970
971 *) Bugfix: standard error pages and responses of the
972 ngx_http_autoindex_module module used the "bgcolor" attribute, and
973 might be displayed incorrectly when using custom color settings in
974 browsers.
975 Thanks to Nova DasSarma.
976
977 *) Change: the logging level of the "no suitable key share" and "no
978 suitable signature algorithm" SSL errors has been lowered from "crit"
979 to "info".
980
981
982 Changes with nginx 1.15.3 28 Aug 2018
983
984 *) Feature: now TLSv1.3 can be used with BoringSSL.
985
986 *) Feature: the "ssl_early_data" directive, currently available with
987 BoringSSL.
988
989 *) Feature: the "keepalive_timeout" and "keepalive_requests" directives
990 in the "upstream" block.
991
992 *) Bugfix: the ngx_http_dav_module did not truncate destination file
993 when copying a file over an existing one with the COPY method.
994
995 *) Bugfix: the ngx_http_dav_module used zero access rights on the
996 destination file and did not preserve file modification time when
997 moving a file between different file systems with the MOVE method.
998
999 *) Bugfix: the ngx_http_dav_module used default access rights when
1000 copying a file with the COPY method.
1001
1002 *) Workaround: some clients might not work when using HTTP/2; the bug
1003 had appeared in 1.13.5.
1004
1005 *) Bugfix: nginx could not be built with LibreSSL 2.8.0.
1006
1007
1008 Changes with nginx 1.15.2 24 Jul 2018
1009
1010 *) Feature: the $ssl_preread_protocol variable in the
1011 ngx_stream_ssl_preread_module.
1012
1013 *) Feature: now when using the "reset_timedout_connection" directive
1014 nginx will reset connections being closed with the 444 code.
1015
1016 *) Change: a logging level of the "http request", "https proxy request",
1017 "unsupported protocol", and "version too low" SSL errors has been
1018 lowered from "crit" to "info".
1019
1020 *) Bugfix: DNS requests were not resent if initial sending of a request
1021 failed.
1022
1023 *) Bugfix: the "reuseport" parameter of the "listen" directive was
1024 ignored if the number of worker processes was specified after the
1025 "listen" directive.
1026
1027 *) Bugfix: when using OpenSSL 1.1.0 or newer it was not possible to
1028 switch off "ssl_prefer_server_ciphers" in a virtual server if it was
1029 switched on in the default server.
1030
1031 *) Bugfix: SSL session reuse with upstream servers did not work with the
1032 TLS 1.3 protocol.
1033
1034
1035 Changes with nginx 1.15.1 03 Jul 2018
1036
1037 *) Feature: the "random" directive inside the "upstream" block.
1038
1039 *) Feature: improved performance when using the "hash" and "ip_hash"
1040 directives with the "zone" directive.
1041
1042 *) Feature: the "reuseport" parameter of the "listen" directive now uses
1043 SO_REUSEPORT_LB on FreeBSD 12.
1044
1045 *) Bugfix: HTTP/2 server push did not work if SSL was terminated by a
1046 proxy server in front of nginx.
1047
1048 *) Bugfix: the "tcp_nopush" directive was always used on backend
1049 connections.
1050
1051 *) Bugfix: sending a disk-buffered request body to a gRPC backend might
1052 fail.
1053
1054
1055 Changes with nginx 1.15.0 05 Jun 2018
1056
1057 *) Change: the "ssl" directive is deprecated; the "ssl" parameter of the
1058 "listen" directive should be used instead.
1059
1060 *) Change: now nginx detects missing SSL certificates during
1061 configuration testing when using the "ssl" parameter of the "listen"
1062 directive.
1063
1064 *) Feature: now the stream module can handle multiple incoming UDP
1065 datagrams from a client within a single session.
1066
1067 *) Bugfix: it was possible to specify an incorrect response code in the
1068 "proxy_cache_valid" directive.
1069
1070 *) Bugfix: nginx could not be built by gcc 8.1.
1071
1072 *) Bugfix: logging to syslog stopped on local IP address changes.
1073
1074 *) Bugfix: nginx could not be built by clang with CUDA SDK installed;
1075 the bug had appeared in 1.13.8.
1076
1077 *) Bugfix: "getsockopt(TCP_FASTOPEN) ... failed" messages might appear
1078 in logs during binary upgrade when using unix domain listen sockets
1079 on FreeBSD.
1080
1081 *) Bugfix: nginx could not be built on Fedora 28 Linux.
1082
1083 *) Bugfix: request processing rate might exceed configured rate when
1084 using the "limit_req" directive.
1085
1086 *) Bugfix: in handling of client addresses when using unix domain listen
1087 sockets to work with datagrams on Linux.
1088
1089 *) Bugfix: in memory allocation error handling.
1090
1091
1092 Changes with nginx 1.13.12 10 Apr 2018
1093
1094 *) Bugfix: connections with gRPC backends might be closed unexpectedly
1095 when returning a large response.
1096
1097
1098 Changes with nginx 1.13.11 03 Apr 2018
1099
1100 *) Feature: the "proxy_protocol" parameter of the "listen" directive now
1101 supports the PROXY protocol version 2.
1102
1103 *) Bugfix: nginx could not be built with OpenSSL 1.1.1 statically on
1104 Linux.
1105
1106 *) Bugfix: in the "http_404", "http_500", etc. parameters of the
1107 "proxy_next_upstream" directive.
1108
1109
1110 Changes with nginx 1.13.10 20 Mar 2018
1111
1112 *) Feature: the "set" parameter of the "include" SSI directive now
1113 allows writing arbitrary responses to a variable; the
1114 "subrequest_output_buffer_size" directive defines maximum response
1115 size.
1116
1117 *) Feature: now nginx uses clock_gettime(CLOCK_MONOTONIC) if available,
1118 to avoid timeouts being incorrectly triggered on system time changes.
1119
1120 *) Feature: the "escape=none" parameter of the "log_format" directive.
1121 Thanks to Johannes Baiter and Calin Don.
1122
1123 *) Feature: the $ssl_preread_alpn_protocols variable in the
1124 ngx_stream_ssl_preread_module.
1125
1126 *) Feature: the ngx_http_grpc_module.
1127
1128 *) Bugfix: in memory allocation error handling in the "geo" directive.
1129
1130 *) Bugfix: when using variables in the "auth_basic_user_file" directive
1131 a null character might appear in logs.
1132 Thanks to Vadim Filimonov.
1133
1134
1135 Changes with nginx 1.13.9 20 Feb 2018
1136
1137 *) Feature: HTTP/2 server push support; the "http2_push" and
1138 "http2_push_preload" directives.
1139
1140 *) Bugfix: "header already sent" alerts might appear in logs when using
1141 cache; the bug had appeared in 1.9.13.
1142
1143 *) Bugfix: a segmentation fault might occur in a worker process if the
1144 "ssl_verify_client" directive was used and no SSL certificate was
1145 specified in a virtual server.
1146
1147 *) Bugfix: in the ngx_http_v2_module.
1148
1149 *) Bugfix: in the ngx_http_dav_module.
1150
1151
1152 Changes with nginx 1.13.8 26 Dec 2017
1153
1154 *) Feature: now nginx automatically preserves the CAP_NET_RAW capability
1155 in worker processes when using the "transparent" parameter of the
1156 "proxy_bind", "fastcgi_bind", "memcached_bind", "scgi_bind", and
1157 "uwsgi_bind" directives.
1158
1159 *) Feature: improved CPU cache line size detection.
1160 Thanks to Debayan Ghosh.
1161
1162 *) Feature: new directives in vim syntax highlighting scripts.
1163 Thanks to Gena Makhomed.
1164
1165 *) Bugfix: binary upgrade refused to work if nginx was re-parented to a
1166 process with PID different from 1 after its parent process has
1167 finished.
1168
1169 *) Bugfix: the ngx_http_autoindex_module incorrectly handled requests
1170 with bodies.
1171
1172 *) Bugfix: in the "proxy_limit_rate" directive when used with the
1173 "keepalive" directive.
1174
1175 *) Bugfix: some parts of a response might be buffered when using
1176 "proxy_buffering off" if the client connection used SSL.
1177 Thanks to Patryk Lesiewicz.
1178
1179 *) Bugfix: in the "proxy_cache_background_update" directive.
1180
1181 *) Bugfix: it was not possible to start a parameter with a variable in
1182 the "${name}" form with the name in curly brackets without enclosing
1183 the parameter into single or double quotes.
1184
1185
1186 Changes with nginx 1.13.7 21 Nov 2017
1187
1188 *) Bugfix: in the $upstream_status variable.
1189
1190 *) Bugfix: a segmentation fault might occur in a worker process if a
1191 backend returned a "101 Switching Protocols" response to a
1192 subrequest.
1193
1194 *) Bugfix: a segmentation fault occurred in a master process if a shared
1195 memory zone size was changed during a reconfiguration and the
1196 reconfiguration failed.
1197
1198 *) Bugfix: in the ngx_http_fastcgi_module.
1199
1200 *) Bugfix: nginx returned the 500 error if parameters without variables
1201 were specified in the "xslt_stylesheet" directive.
1202
1203 *) Workaround: "gzip filter failed to use preallocated memory" alerts
1204 appeared in logs when using a zlib library variant from Intel.
1205
1206 *) Bugfix: the "worker_shutdown_timeout" directive did not work when
1207 using mail proxy and when proxying WebSocket connections.
1208
1209
1210 Changes with nginx 1.13.6 10 Oct 2017
1211
1212 *) Bugfix: switching to the next upstream server in the stream module
1213 did not work when using the "ssl_preread" directive.
1214
1215 *) Bugfix: in the ngx_http_v2_module.
1216 Thanks to Piotr Sikora.
1217
1218 *) Bugfix: nginx did not support dates after the year 2038 on 32-bit
1219 platforms with 64-bit time_t.
1220
1221 *) Bugfix: in handling of dates prior to the year 1970 and after the
1222 year 10000.
1223
1224 *) Bugfix: in the stream module timeouts waiting for UDP datagrams from
1225 upstream servers were not logged or logged at the "info" level
1226 instead of "error".
1227
1228 *) Bugfix: when using HTTP/2 nginx might return the 400 response without
1229 logging the reason.
1230
1231 *) Bugfix: in processing of corrupted cache files.
1232
1233 *) Bugfix: cache control headers were ignored when caching errors
1234 intercepted by error_page.
1235
1236 *) Bugfix: when using HTTP/2 client request body might be corrupted.
1237
1238 *) Bugfix: in handling of client addresses when using unix domain
1239 sockets.
1240
1241 *) Bugfix: nginx hogged CPU when using the "hash ... consistent"
1242 directive in the upstream block if large weights were used and all or
1243 most of the servers were unavailable.
1244
1245
1246 Changes with nginx 1.13.5 05 Sep 2017
1247
1248 *) Feature: the $ssl_client_escaped_cert variable.
1249
1250 *) Bugfix: the "ssl_session_ticket_key" directive and the "include"
1251 parameter of the "geo" directive did not work on Windows.
1252
1253 *) Bugfix: incorrect response length was returned on 32-bit platforms
1254 when requesting more than 4 gigabytes with multiple ranges.
1255
1256 *) Bugfix: the "expires modified" directive and processing of the
1257 "If-Range" request header line did not use the response last
1258 modification time if proxying without caching was used.
1259
1260
1261 Changes with nginx 1.13.4 08 Aug 2017
1262
1263 *) Feature: the ngx_http_mirror_module.
1264
1265 *) Bugfix: client connections might be dropped during configuration
1266 testing when using the "reuseport" parameter of the "listen"
1267 directive on Linux.
1268
1269 *) Bugfix: request body might not be available in subrequests if it was
1270 saved to a file and proxying was used.
1271
1272 *) Bugfix: cleaning cache based on the "max_size" parameter did not work
1273 on Windows.
1274
1275 *) Bugfix: any shared memory allocation required 4096 bytes on Windows.
1276
1277 *) Bugfix: nginx worker might be terminated abnormally when using the
1278 "zone" directive inside the "upstream" block on Windows.
1279
1280
1281 Changes with nginx 1.13.3 11 Jul 2017
1282
1283 *) Security: a specially crafted request might result in an integer
1284 overflow and incorrect processing of ranges in the range filter,
1285 potentially resulting in sensitive information leak (CVE-2017-7529).
1286
1287
1288 Changes with nginx 1.13.2 27 Jun 2017
1289
1290 *) Change: nginx now returns 200 instead of 416 when a range starting
1291 with 0 is requested from an empty file.
1292
1293 *) Feature: the "add_trailer" directive.
1294 Thanks to Piotr Sikora.
1295
1296 *) Bugfix: nginx could not be built on Cygwin and NetBSD; the bug had
1297 appeared in 1.13.0.
1298
1299 *) Bugfix: nginx could not be built under MSYS2 / MinGW 64-bit.
1300 Thanks to Orgad Shaneh.
1301
1302 *) Bugfix: a segmentation fault might occur in a worker process when
1303 using SSI with many includes and proxy_pass with variables.
1304
1305 *) Bugfix: in the ngx_http_v2_module.
1306 Thanks to Piotr Sikora.
1307
1308
1309 Changes with nginx 1.13.1 30 May 2017
1310
1311 *) Feature: now a hostname can be used as the "set_real_ip_from"
1312 directive parameter.
1313
1314 *) Feature: vim syntax highlighting scripts improvements.
1315
1316 *) Feature: the "worker_cpu_affinity" directive now works on DragonFly
1317 BSD.
1318 Thanks to Sepherosa Ziehau.
1319
1320 *) Bugfix: SSL renegotiation on backend connections did not work when
1321 using OpenSSL before 1.1.0.
1322
1323 *) Workaround: nginx could not be built with Oracle Developer Studio
1324 12.5.
1325
1326 *) Workaround: now cache manager ignores long locked cache entries when
1327 cleaning cache based on the "max_size" parameter.
1328
1329 *) Bugfix: client SSL connections were immediately closed if deferred
1330 accept and the "proxy_protocol" parameter of the "listen" directive
1331 were used.
1332
1333 *) Bugfix: in the "proxy_cache_background_update" directive.
1334
1335 *) Workaround: now the "tcp_nodelay" directive sets the TCP_NODELAY
1336 option before an SSL handshake.
1337
1338
1339 Changes with nginx 1.13.0 25 Apr 2017
1340
1341 *) Change: SSL renegotiation is now allowed on backend connections.
1342
1343 *) Feature: the "rcvbuf" and "sndbuf" parameters of the "listen"
1344 directives of the mail proxy and stream modules.
1345
1346 *) Feature: the "return" and "error_page" directives can now be used to
1347 return 308 redirections.
1348 Thanks to Simon Leblanc.
1349
1350 *) Feature: the "TLSv1.3" parameter of the "ssl_protocols" directive.
1351
1352 *) Feature: when logging signals nginx now logs PID of the process which
1353 sent the signal.
1354
1355 *) Bugfix: in memory allocation error handling.
1356
1357 *) Bugfix: if a server in the stream module listened on a wildcard
1358 address, the source address of a response UDP datagram could differ
1359 from the original datagram destination address.
1360
1361
1362 Changes with nginx 1.11.13 04 Apr 2017
1363
1364 *) Feature: the "http_429" parameter of the "proxy_next_upstream",
1365 "fastcgi_next_upstream", "scgi_next_upstream", and
1366 "uwsgi_next_upstream" directives.
1367 Thanks to Piotr Sikora.
1368
1369 *) Bugfix: in memory allocation error handling.
1370
1371 *) Bugfix: requests might hang when using the "sendfile" and
1372 "timer_resolution" directives on Linux.
1373
1374 *) Bugfix: requests might hang when using the "sendfile" and "aio_write"
1375 directives with subrequests.
1376
1377 *) Bugfix: in the ngx_http_v2_module.
1378 Thanks to Piotr Sikora.
1379
1380 *) Bugfix: a segmentation fault might occur in a worker process when
1381 using HTTP/2.
1382
1383 *) Bugfix: requests might hang when using the "limit_rate",
1384 "sendfile_max_chunk", "limit_req" directives, or the $r->sleep()
1385 embedded perl method with subrequests.
1386
1387 *) Bugfix: in the ngx_http_slice_module.
1388
1389
1390 Changes with nginx 1.11.12 24 Mar 2017
1391
1392 *) Bugfix: nginx might hog CPU; the bug had appeared in 1.11.11.
1393
1394
1395 Changes with nginx 1.11.11 21 Mar 2017
1396
1397 *) Feature: the "worker_shutdown_timeout" directive.
1398
1399 *) Feature: vim syntax highlighting scripts improvements.
1400 Thanks to Wei-Ko Kao.
1401
1402 *) Bugfix: a segmentation fault might occur in a worker process if the
1403 $limit_rate variable was set to an empty string.
1404
1405 *) Bugfix: the "proxy_cache_background_update",
1406 "fastcgi_cache_background_update", "scgi_cache_background_update",
1407 and "uwsgi_cache_background_update" directives might work incorrectly
1408 if the "if" directive was used.
1409
1410 *) Bugfix: a segmentation fault might occur in a worker process if
1411 number of large_client_header_buffers in a virtual server was
1412 different from the one in the default server.
1413
1414 *) Bugfix: in the mail proxy server.
1415
1416
1417 Changes with nginx 1.11.10 14 Feb 2017
1418
1419 *) Change: cache header format has been changed, previously cached
1420 responses will be invalidated.
1421
1422 *) Feature: support of "stale-while-revalidate" and "stale-if-error"
1423 extensions in the "Cache-Control" backend response header line.
1424
1425 *) Feature: the "proxy_cache_background_update",
1426 "fastcgi_cache_background_update", "scgi_cache_background_update",
1427 and "uwsgi_cache_background_update" directives.
1428
1429 *) Feature: nginx is now able to cache responses with the "Vary" header
1430 line up to 128 characters long (instead of 42 characters in previous
1431 versions).
1432
1433 *) Feature: the "build" parameter of the "server_tokens" directive.
1434 Thanks to Tom Thorogood.
1435
1436 *) Bugfix: "[crit] SSL_write() failed" messages might appear in logs
1437 when handling requests with the "Expect: 100-continue" request header
1438 line.
1439
1440 *) Bugfix: the ngx_http_slice_module did not work in named locations.
1441
1442 *) Bugfix: a segmentation fault might occur in a worker process when
1443 using AIO after an "X-Accel-Redirect" redirection.
1444
1445 *) Bugfix: reduced memory consumption for long-lived requests using
1446 gzipping.
1447
1448
1449 Changes with nginx 1.11.9 24 Jan 2017
1450
1451 *) Bugfix: nginx might hog CPU when using the stream module; the bug had
1452 appeared in 1.11.5.
1453
1454 *) Bugfix: EXTERNAL authentication mechanism in mail proxy was accepted
1455 even if it was not enabled in the configuration.
1456
1457 *) Bugfix: a segmentation fault might occur in a worker process if the
1458 "ssl_verify_client" directive of the stream module was used.
1459
1460 *) Bugfix: the "ssl_verify_client" directive of the stream module might
1461 not work.
1462
1463 *) Bugfix: closing keepalive connections due to no free worker
1464 connections might be too aggressive.
1465 Thanks to Joel Cunningham.
1466
1467 *) Bugfix: an incorrect response might be returned when using the
1468 "sendfile" directive on FreeBSD and macOS; the bug had appeared in
1469 1.7.8.
1470
1471 *) Bugfix: a truncated response might be stored in cache when using the
1472 "aio_write" directive.
1473
1474 *) Bugfix: a socket leak might occur when using the "aio_write"
1475 directive.
1476
1477
1478 Changes with nginx 1.11.8 27 Dec 2016
1479
1480 *) Feature: the "absolute_redirect" directive.
1481
1482 *) Feature: the "escape" parameter of the "log_format" directive.
1483
1484 *) Feature: client SSL certificates verification in the stream module.
1485
1486 *) Feature: the "ssl_session_ticket_key" directive supports AES256
1487 encryption of TLS session tickets when used with 80-byte keys.
1488
1489 *) Feature: vim-commentary support in vim scripts.
1490 Thanks to Armin Grodon.
1491
1492 *) Bugfix: recursion when evaluating variables was not limited.
1493
1494 *) Bugfix: in the ngx_stream_ssl_preread_module.
1495
1496 *) Bugfix: if a server in an upstream in the stream module failed, it
1497 was considered alive only when a test connection sent to it after
1498 fail_timeout was closed; now a successfully established connection is
1499 enough.
1500
1501 *) Bugfix: nginx/Windows could not be built with 64-bit Visual Studio.
1502
1503 *) Bugfix: nginx/Windows could not be built with OpenSSL 1.1.0.
1504
1505
1506 Changes with nginx 1.11.7 13 Dec 2016
1507
1508 *) Change: now in case of a client certificate verification error the
1509 $ssl_client_verify variable contains a string with the failure
1510 reason, for example, "FAILED:certificate has expired".
1511
1512 *) Feature: the $ssl_ciphers, $ssl_curves, $ssl_client_v_start,
1513 $ssl_client_v_end, and $ssl_client_v_remain variables.
1514
1515 *) Feature: the "volatile" parameter of the "map" directive.
1516
1517 *) Bugfix: dependencies specified for a module were ignored while
1518 building dynamic modules.
1519
1520 *) Bugfix: when using HTTP/2 and the "limit_req" or "auth_request"
1521 directives client request body might be corrupted; the bug had
1522 appeared in 1.11.0.
1523
1524 *) Bugfix: a segmentation fault might occur in a worker process when
1525 using HTTP/2; the bug had appeared in 1.11.3.
1526
1527 *) Bugfix: in the ngx_http_mp4_module.
1528 Thanks to Congcong Hu.
1529
1530 *) Bugfix: in the ngx_http_perl_module.
1531
1532
1533 Changes with nginx 1.11.6 15 Nov 2016
1534
1535 *) Change: format of the $ssl_client_s_dn and $ssl_client_i_dn variables
1536 has been changed to follow RFC 2253 (RFC 4514); values in the old
1537 format are available in the $ssl_client_s_dn_legacy and
1538 $ssl_client_i_dn_legacy variables.
1539
1540 *) Change: when storing temporary files in a cache directory they will
1541 be stored in the same subdirectories as corresponding cache files
1542 instead of a separate subdirectory for temporary files.
1543
1544 *) Feature: EXTERNAL authentication mechanism support in mail proxy.
1545 Thanks to Robert Norris.
1546
1547 *) Feature: WebP support in the ngx_http_image_filter_module.
1548
1549 *) Feature: variables support in the "proxy_method" directive.
1550 Thanks to Dmitry Lazurkin.
1551
1552 *) Feature: the "http2_max_requests" directive in the
1553 ngx_http_v2_module.
1554
1555 *) Feature: the "proxy_cache_max_range_offset",
1556 "fastcgi_cache_max_range_offset", "scgi_cache_max_range_offset", and
1557 "uwsgi_cache_max_range_offset" directives.
1558
1559 *) Bugfix: graceful shutdown of old worker processes might require
1560 infinite time when using HTTP/2.
1561
1562 *) Bugfix: in the ngx_http_mp4_module.
1563
1564 *) Bugfix: "ignore long locked inactive cache entry" alerts might appear
1565 in logs when proxying WebSocket connections with caching enabled.
1566
1567 *) Bugfix: nginx did not write anything to log and returned a response
1568 with code 502 instead of 504 when a timeout occurred during an SSL
1569 handshake to a backend.
1570
1571
1572 Changes with nginx 1.11.5 11 Oct 2016
1573
1574 *) Change: the --with-ipv6 configure option was removed, now IPv6
1575 support is configured automatically.
1576
1577 *) Change: now if there are no available servers in an upstream, nginx
1578 will not reset number of failures of all servers as it previously
1579 did, but will wait for fail_timeout to expire.
1580
1581 *) Feature: the ngx_stream_ssl_preread_module.
1582
1583 *) Feature: the "server" directive in the "upstream" context supports
1584 the "max_conns" parameter.
1585
1586 *) Feature: the --with-compat configure option.
1587
1588 *) Feature: "manager_files", "manager_threshold", and "manager_sleep"
1589 parameters of the "proxy_cache_path", "fastcgi_cache_path",
1590 "scgi_cache_path", and "uwsgi_cache_path" directives.
1591
1592 *) Bugfix: flags passed by the --with-ld-opt configure option were not
1593 used while building perl module.
1594
1595 *) Bugfix: in the "add_after_body" directive when used with the
1596 "sub_filter" directive.
1597
1598 *) Bugfix: in the $realip_remote_addr variable.
1599
1600 *) Bugfix: the "dav_access", "proxy_store_access",
1601 "fastcgi_store_access", "scgi_store_access", and "uwsgi_store_access"
1602 directives ignored permissions specified for user.
1603
1604 *) Bugfix: unix domain listen sockets might not be inherited during
1605 binary upgrade on Linux.
1606
1607 *) Bugfix: nginx returned the 400 response on requests with the "-"
1608 character in the HTTP method.
1609
1610
1611 Changes with nginx 1.11.4 13 Sep 2016
1612
1613 *) Feature: the $upstream_bytes_received variable.
1614
1615 *) Feature: the $bytes_received, $session_time, $protocol, $status,
1616 $upstream_addr, $upstream_bytes_sent, $upstream_bytes_received,
1617 $upstream_connect_time, $upstream_first_byte_time, and
1618 $upstream_session_time variables in the stream module.
1619
1620 *) Feature: the ngx_stream_log_module.
1621
1622 *) Feature: the "proxy_protocol" parameter of the "listen" directive,
1623 the $proxy_protocol_addr and $proxy_protocol_port variables in the
1624 stream module.
1625
1626 *) Feature: the ngx_stream_realip_module.
1627
1628 *) Bugfix: nginx could not be built with the stream module and the
1629 ngx_http_ssl_module, but without ngx_stream_ssl_module; the bug had
1630 appeared in 1.11.3.
1631
1632 *) Feature: the IP_BIND_ADDRESS_NO_PORT socket option was not used; the
1633 bug had appeared in 1.11.2.
1634
1635 *) Bugfix: in the "ranges" parameter of the "geo" directive.
1636
1637 *) Bugfix: an incorrect response might be returned when using the "aio
1638 threads" and "sendfile" directives; the bug had appeared in 1.9.13.
1639
1640
1641 Changes with nginx 1.11.3 26 Jul 2016
1642
1643 *) Change: now the "accept_mutex" directive is turned off by default.
1644
1645 *) Feature: now nginx uses EPOLLEXCLUSIVE on Linux.
1646
1647 *) Feature: the ngx_stream_geo_module.
1648
1649 *) Feature: the ngx_stream_geoip_module.
1650
1651 *) Feature: the ngx_stream_split_clients_module.
1652
1653 *) Feature: variables support in the "proxy_pass" and "proxy_ssl_name"
1654 directives in the stream module.
1655
1656 *) Bugfix: socket leak when using HTTP/2.
1657
1658 *) Bugfix: in configure tests.
1659 Thanks to Piotr Sikora.
1660
1661
1662 Changes with nginx 1.11.2 05 Jul 2016
1663
1664 *) Change: now nginx always uses internal MD5 and SHA1 implementations;
1665 the --with-md5 and --with-sha1 configure options were canceled.
1666
1667 *) Feature: variables support in the stream module.
1668
1669 *) Feature: the ngx_stream_map_module.
1670
1671 *) Feature: the ngx_stream_return_module.
1672
1673 *) Feature: a port can be specified in the "proxy_bind", "fastcgi_bind",
1674 "memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
1675
1676 *) Feature: now nginx uses the IP_BIND_ADDRESS_NO_PORT socket option
1677 when available.
1678
1679 *) Bugfix: a segmentation fault might occur in a worker process when
1680 using HTTP/2 and the "proxy_request_buffering" directive.
1681
1682 *) Bugfix: the "Content-Length" request header line was always added to
1683 requests passed to backends, including requests without body, when
1684 using HTTP/2.
1685
1686 *) Bugfix: "http request count is zero" alerts might appear in logs when
1687 using HTTP/2.
1688
1689 *) Bugfix: unnecessary buffering might occur when using the "sub_filter"
1690 directive; the issue had appeared in 1.9.4.
1691
1692
1693 Changes with nginx 1.11.1 31 May 2016
1694
1695 *) Security: a segmentation fault might occur in a worker process while
1696 writing a specially crafted request body to a temporary file
1697 (CVE-2016-4450); the bug had appeared in 1.3.9.
1698
1699
1700 Changes with nginx 1.11.0 24 May 2016
1701
1702 *) Feature: the "transparent" parameter of the "proxy_bind",
1703 "fastcgi_bind", "memcached_bind", "scgi_bind", and "uwsgi_bind"
1704 directives.
1705
1706 *) Feature: the $request_id variable.
1707
1708 *) Feature: the "map" directive supports combinations of multiple
1709 variables as resulting values.
1710
1711 *) Feature: now nginx checks if EPOLLRDHUP events are supported by
1712 kernel, and optimizes connection handling accordingly if the "epoll"
1713 method is used.
1714
1715 *) Feature: the "ssl_certificate" and "ssl_certificate_key" directives
1716 can be specified multiple times to load certificates of different
1717 types (for example, RSA and ECDSA).
1718
1719 *) Feature: the "ssl_ecdh_curve" directive now allows specifying a list
1720 of curves when using OpenSSL 1.0.2 or newer; by default a list built
1721 into OpenSSL is used.
1722
1723 *) Change: to use DHE ciphers it is now required to specify parameters
1724 using the "ssl_dhparam" directive.
1725
1726 *) Feature: the $proxy_protocol_port variable.
1727
1728 *) Feature: the $realip_remote_port variable in the
1729 ngx_http_realip_module.
1730
1731 *) Feature: the ngx_http_realip_module is now able to set the client
1732 port in addition to the address.
1733
1734 *) Change: the "421 Misdirected Request" response now used when
1735 rejecting requests to a virtual server different from one negotiated
1736 during an SSL handshake; this improves interoperability with some
1737 HTTP/2 clients when using client certificates.
1738
1739 *) Change: HTTP/2 clients can now start sending request body
1740 immediately; the "http2_body_preread_size" directive controls size of
1741 the buffer used before nginx will start reading client request body.
1742
1743 *) Bugfix: cached error responses were not updated when using the
1744 "proxy_cache_bypass" directive.
1745
1746
1747 Changes with nginx 1.9.15 19 Apr 2016
1748
1749 *) Bugfix: "recv() failed" errors might occur when using HHVM as a
1750 FastCGI server.
1751
1752 *) Bugfix: when using HTTP/2 and the "limit_req" or "auth_request"
1753 directives a timeout or a "client violated flow control" error might
1754 occur while reading client request body; the bug had appeared in
1755 1.9.14.
1756
1757 *) Workaround: a response might not be shown by some browsers if HTTP/2
1758 was used and client request body was not fully read; the bug had
1759 appeared in 1.9.14.
1760
1761 *) Bugfix: connections might hang when using the "aio threads"
1762 directive.
1763 Thanks to Mindaugas Rasiukevicius.
1764
1765
1766 Changes with nginx 1.9.14 05 Apr 2016
1767
1768 *) Feature: OpenSSL 1.1.0 compatibility.
1769
1770 *) Feature: the "proxy_request_buffering", "fastcgi_request_buffering",
1771 "scgi_request_buffering", and "uwsgi_request_buffering" directives
1772 now work with HTTP/2.
1773
1774 *) Bugfix: "zero size buf in output" alerts might appear in logs when
1775 using HTTP/2.
1776
1777 *) Bugfix: the "client_max_body_size" directive might work incorrectly
1778 when using HTTP/2.
1779
1780 *) Bugfix: of minor bugs in logging.
1781
1782
1783 Changes with nginx 1.9.13 29 Mar 2016
1784
1785 *) Change: non-idempotent requests (POST, LOCK, PATCH) are no longer
1786 passed to the next server by default if a request has been sent to a
1787 backend; the "non_idempotent" parameter of the "proxy_next_upstream"
1788 directive explicitly allows retrying such requests.
1789
1790 *) Feature: the ngx_http_perl_module can be built dynamically.
1791
1792 *) Feature: UDP support in the stream module.
1793
1794 *) Feature: the "aio_write" directive.
1795
1796 *) Feature: now cache manager monitors number of elements in caches and
1797 tries to avoid cache keys zone overflows.
1798
1799 *) Bugfix: "task already active" and "second aio post" alerts might
1800 appear in logs when using the "sendfile" and "aio" directives with
1801 subrequests.
1802
1803 *) Bugfix: "zero size buf in output" alerts might appear in logs if
1804 caching was used and a client closed a connection prematurely.
1805
1806 *) Bugfix: connections with clients might be closed needlessly if
1807 caching was used.
1808 Thanks to Justin Li.
1809
1810 *) Bugfix: nginx might hog CPU if the "sendfile" directive was used on
1811 Linux or Solaris and a file being sent was changed during sending.
1812
1813 *) Bugfix: connections might hang when using the "sendfile" and "aio
1814 threads" directives.
1815
1816 *) Bugfix: in the "proxy_pass", "fastcgi_pass", "scgi_pass", and
1817 "uwsgi_pass" directives when using variables.
1818 Thanks to Piotr Sikora.
1819
1820 *) Bugfix: in the ngx_http_sub_filter_module.
1821
1822 *) Bugfix: if an error occurred in a cached backend connection, the
1823 request was passed to the next server regardless of the
1824 proxy_next_upstream directive.
1825
1826 *) Bugfix: "CreateFile() failed" errors when creating temporary files on
1827 Windows.
1828
1829
1830 Changes with nginx 1.9.12 24 Feb 2016
1831
1832 *) Feature: Huffman encoding of response headers in HTTP/2.
1833 Thanks to Vlad Krasnov.
1834
1835 *) Feature: the "worker_cpu_affinity" directive now supports more than
1836 64 CPUs.
1837
1838 *) Bugfix: compatibility with 3rd party C++ modules; the bug had
1839 appeared in 1.9.11.
1840 Thanks to Piotr Sikora.
1841
1842 *) Bugfix: nginx could not be built statically with OpenSSL on Linux;
1843 the bug had appeared in 1.9.11.
1844
1845 *) Bugfix: the "add_header ... always" directive with an empty value did
1846 not delete "Last-Modified" and "ETag" header lines from error
1847 responses.
1848
1849 *) Workaround: "called a function you should not call" and "shutdown
1850 while in init" messages might appear in logs when using OpenSSL
1851 1.0.2f.
1852
1853 *) Bugfix: invalid headers might be logged incorrectly.
1854
1855 *) Bugfix: socket leak when using HTTP/2.
1856
1857 *) Bugfix: in the ngx_http_v2_module.
1858
1859
1860 Changes with nginx 1.9.11 09 Feb 2016
1861
1862 *) Feature: TCP support in resolver.
1863
1864 *) Feature: dynamic modules.
1865
1866 *) Bugfix: the $request_length variable did not include size of request
1867 headers when using HTTP/2.
1868
1869 *) Bugfix: in the ngx_http_v2_module.
1870
1871
1872 Changes with nginx 1.9.10 26 Jan 2016
1873
1874 *) Security: invalid pointer dereference might occur during DNS server
1875 response processing if the "resolver" directive was used, allowing an
1876 attacker who is able to forge UDP packets from the DNS server to
1877 cause segmentation fault in a worker process (CVE-2016-0742).
1878
1879 *) Security: use-after-free condition might occur during CNAME response
1880 processing if the "resolver" directive was used, allowing an attacker
1881 who is able to trigger name resolution to cause segmentation fault in
1882 a worker process, or might have potential other impact
1883 (CVE-2016-0746).
1884
1885 *) Security: CNAME resolution was insufficiently limited if the
1886 "resolver" directive was used, allowing an attacker who is able to
1887 trigger arbitrary name resolution to cause excessive resource
1888 consumption in worker processes (CVE-2016-0747).
1889
1890 *) Feature: the "auto" parameter of the "worker_cpu_affinity" directive.
1891
1892 *) Bugfix: the "proxy_protocol" parameter of the "listen" directive did
1893 not work with IPv6 listen sockets.
1894
1895 *) Bugfix: connections to upstream servers might be cached incorrectly
1896 when using the "keepalive" directive.
1897
1898 *) Bugfix: proxying used the HTTP method of the original request after
1899 an "X-Accel-Redirect" redirection.
1900
1901
1902 Changes with nginx 1.9.9 09 Dec 2015
1903
1904 *) Bugfix: proxying to unix domain sockets did not work when using
1905 variables; the bug had appeared in 1.9.8.
1906
1907
1908 Changes with nginx 1.9.8 08 Dec 2015
1909
1910 *) Feature: pwritev() support.
1911
1912 *) Feature: the "include" directive inside the "upstream" block.
1913
1914 *) Feature: the ngx_http_slice_module.
1915
1916 *) Bugfix: a segmentation fault might occur in a worker process when
1917 using LibreSSL; the bug had appeared in 1.9.6.
1918
1919 *) Bugfix: nginx could not be built on OS X in some cases.
1920
1921
1922 Changes with nginx 1.9.7 17 Nov 2015
1923
1924 *) Feature: the "nohostname" parameter of logging to syslog.
1925
1926 *) Feature: the "proxy_cache_convert_head" directive.
1927
1928 *) Feature: the $realip_remote_addr variable in the
1929 ngx_http_realip_module.
1930
1931 *) Bugfix: the "expires" directive might not work when using variables.
1932
1933 *) Bugfix: a segmentation fault might occur in a worker process when
1934 using HTTP/2; the bug had appeared in 1.9.6.
1935
1936 *) Bugfix: if nginx was built with the ngx_http_v2_module it was
1937 possible to use the HTTP/2 protocol even if the "http2" parameter of
1938 the "listen" directive was not specified.
1939
1940 *) Bugfix: in the ngx_http_v2_module.
1941
1942
1943 Changes with nginx 1.9.6 27 Oct 2015
1944
1945 *) Bugfix: a segmentation fault might occur in a worker process when
1946 using HTTP/2.
1947 Thanks to Piotr Sikora and Denis Andzakovic.
1948
1949 *) Bugfix: the $server_protocol variable was empty when using HTTP/2.
1950
1951 *) Bugfix: backend SSL connections in the stream module might be timed
1952 out unexpectedly.
1953
1954 *) Bugfix: a segmentation fault might occur in a worker process if
1955 different ssl_session_cache settings were used in different virtual
1956 servers.
1957
1958 *) Bugfix: nginx/Windows could not be built with MinGW gcc; the bug had
1959 appeared in 1.9.4.
1960 Thanks to Kouhei Sutou.
1961
1962 *) Bugfix: time was not updated when the timer_resolution directive was
1963 used on Windows.
1964
1965 *) Miscellaneous minor fixes and improvements.
1966 Thanks to Markus Linnala, Kurtis Nusbaum and Piotr Sikora.
1967
1968
1969 Changes with nginx 1.9.5 22 Sep 2015
1970
1971 *) Feature: the ngx_http_v2_module (replaces ngx_http_spdy_module).
1972 Thanks to Dropbox and Automattic for sponsoring this work.
1973
1974 *) Change: now the "output_buffers" directive uses two buffers by
1975 default.
1976
1977 *) Change: now nginx limits subrequests recursion, not simultaneous
1978 subrequests.
1979
1980 *) Change: now nginx checks the whole cache key when returning a
1981 response from cache.
1982 Thanks to Gena Makhomed and Sergey Brester.
1983
1984 *) Bugfix: "header already sent" alerts might appear in logs when using
1985 cache; the bug had appeared in 1.7.5.
1986
1987 *) Bugfix: "writev() failed (4: Interrupted system call)" errors might
1988 appear in logs when using CephFS and the "timer_resolution" directive
1989 on Linux.
1990
1991 *) Bugfix: in invalid configurations handling.
1992 Thanks to Markus Linnala.
1993
1994 *) Bugfix: a segmentation fault occurred in a worker process if the
1995 "sub_filter" directive was used at http level; the bug had appeared
1996 in 1.9.4.
1997
1998
1999 Changes with nginx 1.9.4 18 Aug 2015
2000
2001 *) Change: the "proxy_downstream_buffer" and "proxy_upstream_buffer"
2002 directives of the stream module are replaced with the
2003 "proxy_buffer_size" directive.
2004
2005 *) Feature: the "tcp_nodelay" directive in the stream module.
2006
2007 *) Feature: multiple "sub_filter" directives can be used simultaneously.
2008
2009 *) Feature: variables support in the search string of the "sub_filter"
2010 directive.
2011
2012 *) Workaround: configuration testing might fail under Linux OpenVZ.
2013 Thanks to Gena Makhomed.
2014
2015 *) Bugfix: old worker processes might hog CPU after reconfiguration with
2016 a large number of worker_connections.
2017
2018 *) Bugfix: a segmentation fault might occur in a worker process if the
2019 "try_files" and "alias" directives were used inside a location given
2020 by a regular expression; the bug had appeared in 1.7.1.
2021
2022 *) Bugfix: the "try_files" directive inside a nested location given by a
2023 regular expression worked incorrectly if the "alias" directive was
2024 used in the outer location.
2025
2026 *) Bugfix: in hash table initialization error handling.
2027
2028 *) Bugfix: nginx could not be built with Visual Studio 2015.
2029
2030
2031 Changes with nginx 1.9.3 14 Jul 2015
2032
2033 *) Change: duplicate "http", "mail", and "stream" blocks are now
2034 disallowed.
2035
2036 *) Feature: connection limiting in the stream module.
2037
2038 *) Feature: data rate limiting in the stream module.
2039
2040 *) Bugfix: the "zone" directive inside the "upstream" block did not work
2041 on Windows.
2042
2043 *) Bugfix: compatibility with LibreSSL in the stream module.
2044 Thanks to Piotr Sikora.
2045
2046 *) Bugfix: in the "--builddir" configure parameter.
2047 Thanks to Piotr Sikora.
2048
2049 *) Bugfix: the "ssl_stapling_file" directive did not work; the bug had
2050 appeared in 1.9.2.
2051 Thanks to Faidon Liambotis and Brandon Black.
2052
2053 *) Bugfix: a segmentation fault might occur in a worker process if the
2054 "ssl_stapling" directive was used; the bug had appeared in 1.9.2.
2055 Thanks to Matthew Baldwin.
2056
2057
2058 Changes with nginx 1.9.2 16 Jun 2015
2059
2060 *) Feature: the "backlog" parameter of the "listen" directives of the
2061 mail proxy and stream modules.
2062
2063 *) Feature: the "allow" and "deny" directives in the stream module.
2064
2065 *) Feature: the "proxy_bind" directive in the stream module.
2066
2067 *) Feature: the "proxy_protocol" directive in the stream module.
2068
2069 *) Feature: the -T switch.
2070
2071 *) Feature: the REQUEST_SCHEME parameter added to the fastcgi.conf,
2072 fastcgi_params, scgi_params, and uwsgi_params standard configuration
2073 files.
2074
2075 *) Bugfix: the "reuseport" parameter of the "listen" directive of the
2076 stream module did not work.
2077
2078 *) Bugfix: OCSP stapling might return an expired OCSP response in some
2079 cases.
2080
2081
2082 Changes with nginx 1.9.1 26 May 2015
2083
2084 *) Change: now SSLv3 protocol is disabled by default.
2085
2086 *) Change: some long deprecated directives are not supported anymore.
2087
2088 *) Feature: the "reuseport" parameter of the "listen" directive.
2089 Thanks to Yingqi Lu at Intel and Sepherosa Ziehau.
2090
2091 *) Feature: the $upstream_connect_time variable.
2092
2093 *) Bugfix: in the "hash" directive on big-endian platforms.
2094
2095 *) Bugfix: nginx might fail to start on some old Linux variants; the bug
2096 had appeared in 1.7.11.
2097
2098 *) Bugfix: in IP address parsing.
2099 Thanks to Sergey Polovko.
2100
2101
2102 Changes with nginx 1.9.0 28 Apr 2015
2103
2104 *) Change: obsolete aio and rtsig event methods have been removed.
2105
2106 *) Feature: the "zone" directive inside the "upstream" block.
2107
2108 *) Feature: the stream module.
2109
2110 *) Feature: byte ranges support in the ngx_http_memcached_module.
2111 Thanks to Martin Mlynář.
2112
2113 *) Feature: shared memory can now be used on Windows versions with
2114 address space layout randomization.
2115 Thanks to Sergey Brester.
2116
2117 *) Feature: the "error_log" directive can now be used on mail and server
2118 levels in mail proxy.
2119
2120 *) Bugfix: the "proxy_protocol" parameter of the "listen" directive did
2121 not work if not specified in the first "listen" directive for a
2122 listen socket.
2123
2124
2125 Changes with nginx 1.7.12 07 Apr 2015
2126
2127 *) Feature: now the "tcp_nodelay" directive works with backend SSL
2128 connections.
2129
2130 *) Feature: now thread pools can be used to read cache file headers.
2131
2132 *) Bugfix: in the "proxy_request_buffering" directive.
2133
2134 *) Bugfix: a segmentation fault might occur in a worker process when
2135 using thread pools on Linux.
2136
2137 *) Bugfix: in error handling when using the "ssl_stapling" directive.
2138 Thanks to Filipe da Silva.
2139
2140 *) Bugfix: in the ngx_http_spdy_module.
2141
2142
2143 Changes with nginx 1.7.11 24 Mar 2015
2144
2145 *) Change: the "sendfile" parameter of the "aio" directive is
2146 deprecated; now nginx automatically uses AIO to pre-load data for
2147 sendfile if both "aio" and "sendfile" directives are used.
2148
2149 *) Feature: experimental thread pools support.
2150
2151 *) Feature: the "proxy_request_buffering", "fastcgi_request_buffering",
2152 "scgi_request_buffering", and "uwsgi_request_buffering" directives.
2153
2154 *) Feature: request body filters experimental API.
2155
2156 *) Feature: client SSL certificates support in mail proxy.
2157 Thanks to Sven Peter, Franck Levionnois, and Filipe Da Silva.
2158
2159 *) Feature: startup speedup when using the "hash ... consistent"
2160 directive in the upstream block.
2161 Thanks to Wai Keen Woon.
2162
2163 *) Feature: debug logging into a cyclic memory buffer.
2164
2165 *) Bugfix: in hash table handling.
2166 Thanks to Chris West.
2167
2168 *) Bugfix: in the "proxy_cache_revalidate" directive.
2169
2170 *) Bugfix: SSL connections might hang if deferred accept or the
2171 "proxy_protocol" parameter of the "listen" directive were used.
2172 Thanks to James Hamlin.
2173
2174 *) Bugfix: the $upstream_response_time variable might contain a wrong
2175 value if the "image_filter" directive was used.
2176
2177 *) Bugfix: in integer overflow handling.
2178 Thanks to Régis Leroy.
2179
2180 *) Bugfix: it was not possible to enable SSLv3 with LibreSSL.
2181
2182 *) Bugfix: the "ignoring stale global SSL error ... called a function
2183 you should not call" alerts appeared in logs when using LibreSSL.
2184
2185 *) Bugfix: certificates specified by the "ssl_client_certificate" and
2186 "ssl_trusted_certificate" directives were inadvertently used to
2187 automatically construct certificate chains.
2188
2189
2190 Changes with nginx 1.7.10 10 Feb 2015
2191
2192 *) Feature: the "use_temp_path" parameter of the "proxy_cache_path",
2193 "fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path"
2194 directives.
2195
2196 *) Feature: the $upstream_header_time variable.
2197
2198 *) Workaround: now on disk overflow nginx tries to write error logs once
2199 a second only.
2200
2201 *) Bugfix: the "try_files" directive did not ignore normal files while
2202 testing directories.
2203 Thanks to Damien Tournoud.
2204
2205 *) Bugfix: alerts "sendfile() failed" if the "sendfile" directive was
2206 used on OS X; the bug had appeared in 1.7.8.
2207
2208 *) Bugfix: alerts "sem_post() failed" might appear in logs.
2209
2210 *) Bugfix: nginx could not be built with musl libc.
2211 Thanks to James Taylor.
2212
2213 *) Bugfix: nginx could not be built on Tru64 UNIX.
2214 Thanks to Goetz T. Fischer.
2215
2216
2217 Changes with nginx 1.7.9 23 Dec 2014
2218
2219 *) Feature: variables support in the "proxy_cache", "fastcgi_cache",
2220 "scgi_cache", and "uwsgi_cache" directives.
2221
2222 *) Feature: variables support in the "expires" directive.
2223
2224 *) Feature: loading of secret keys from hardware tokens with OpenSSL
2225 engines.
2226 Thanks to Dmitrii Pichulin.
2227
2228 *) Feature: the "autoindex_format" directive.
2229
2230 *) Bugfix: cache revalidation is now only used for responses with 200
2231 and 206 status codes.
2232 Thanks to Piotr Sikora.
2233
2234 *) Bugfix: the "TE" client request header line was passed to backends
2235 while proxying.
2236
2237 *) Bugfix: the "proxy_pass", "fastcgi_pass", "scgi_pass", and
2238 "uwsgi_pass" directives might not work correctly inside the "if" and
2239 "limit_except" blocks.
2240
2241 *) Bugfix: the "proxy_store" directive with the "on" parameter was
2242 ignored if the "proxy_store" directive with an explicitly specified
2243 file path was used on a previous level.
2244
2245 *) Bugfix: nginx could not be built with BoringSSL.
2246 Thanks to Lukas Tribus.
2247
2248
2249 Changes with nginx 1.7.8 02 Dec 2014
2250
2251 *) Change: now the "If-Modified-Since", "If-Range", etc. client request
2252 header lines are passed to a backend while caching if nginx knows in
2253 advance that the response will not be cached (e.g., when using
2254 proxy_cache_min_uses).
2255
2256 *) Change: now after proxy_cache_lock_timeout nginx sends a request to a
2257 backend with caching disabled; the new directives
2258 "proxy_cache_lock_age", "fastcgi_cache_lock_age",
2259 "scgi_cache_lock_age", and "uwsgi_cache_lock_age" specify a time
2260 after which the lock will be released and another attempt to cache a
2261 response will be made.
2262
2263 *) Change: the "log_format" directive can now be used only at http
2264 level.
2265
2266 *) Feature: the "proxy_ssl_certificate", "proxy_ssl_certificate_key",
2267 "proxy_ssl_password_file", "uwsgi_ssl_certificate",
2268 "uwsgi_ssl_certificate_key", and "uwsgi_ssl_password_file"
2269 directives.
2270 Thanks to Piotr Sikora.
2271
2272 *) Feature: it is now possible to switch to a named location using
2273 "X-Accel-Redirect".
2274 Thanks to Toshikuni Fukaya.
2275
2276 *) Feature: now the "tcp_nodelay" directive works with SPDY connections.
2277
2278 *) Feature: new directives in vim syntax highliting scripts.
2279 Thanks to Peter Wu.
2280
2281 *) Bugfix: nginx ignored the "s-maxage" value in the "Cache-Control"
2282 backend response header line.
2283 Thanks to Piotr Sikora.
2284
2285 *) Bugfix: in the ngx_http_spdy_module.
2286 Thanks to Piotr Sikora.
2287
2288 *) Bugfix: in the "ssl_password_file" directive when using OpenSSL
2289 0.9.8zc, 1.0.0o, 1.0.1j.
2290
2291 *) Bugfix: alerts "header already sent" appeared in logs if the
2292 "post_action" directive was used; the bug had appeared in 1.5.4.
2293
2294 *) Bugfix: alerts "the http output chain is empty" might appear in logs
2295 if the "postpone_output 0" directive was used with SSI includes.
2296
2297 *) Bugfix: in the "proxy_cache_lock" directive with SSI subrequests.
2298 Thanks to Yichun Zhang.
2299
2300
2301 Changes with nginx 1.7.7 28 Oct 2014
2302
2303 *) Change: now nginx takes into account the "Vary" header line in a
2304 backend response while caching.
2305
2306 *) Feature: the "proxy_force_ranges", "fastcgi_force_ranges",
2307 "scgi_force_ranges", and "uwsgi_force_ranges" directives.
2308
2309 *) Feature: the "proxy_limit_rate", "fastcgi_limit_rate",
2310 "scgi_limit_rate", and "uwsgi_limit_rate" directives.
2311
2312 *) Feature: the "Vary" parameter of the "proxy_ignore_headers",
2313 "fastcgi_ignore_headers", "scgi_ignore_headers", and
2314 "uwsgi_ignore_headers" directives.
2315
2316 *) Bugfix: the last part of a response received from a backend with
2317 unbufferred proxy might not be sent to a client if "gzip" or "gunzip"
2318 directives were used.
2319
2320 *) Bugfix: in the "proxy_cache_revalidate" directive.
2321 Thanks to Piotr Sikora.
2322
2323 *) Bugfix: in error handling.
2324 Thanks to Yichun Zhang and Daniil Bondarev.
2325
2326 *) Bugfix: in the "proxy_next_upstream_tries" and
2327 "proxy_next_upstream_timeout" directives.
2328 Thanks to Feng Gu.
2329
2330 *) Bugfix: nginx/Windows could not be built with MinGW-w64 gcc.
2331 Thanks to Kouhei Sutou.
2332
2333
2334 Changes with nginx 1.7.6 30 Sep 2014
2335
2336 *) Change: the deprecated "limit_zone" directive is not supported
2337 anymore.
2338
2339 *) Feature: the "limit_conn_zone" and "limit_req_zone" directives now
2340 can be used with combinations of multiple variables.
2341
2342 *) Bugfix: request body might be transmitted incorrectly when retrying a
2343 FastCGI request to the next upstream server.
2344
2345 *) Bugfix: in logging to syslog.
2346
2347
2348 Changes with nginx 1.7.5 16 Sep 2014
2349
2350 *) Security: it was possible to reuse SSL sessions in unrelated contexts
2351 if a shared SSL session cache or the same TLS session ticket key was
2352 used for multiple "server" blocks (CVE-2014-3616).
2353 Thanks to Antoine Delignat-Lavaud.
2354
2355 *) Change: now the "stub_status" directive does not require a parameter.
2356
2357 *) Feature: the "always" parameter of the "add_header" directive.
2358
2359 *) Feature: the "proxy_next_upstream_tries",
2360 "proxy_next_upstream_timeout", "fastcgi_next_upstream_tries",
2361 "fastcgi_next_upstream_timeout", "memcached_next_upstream_tries",
2362 "memcached_next_upstream_timeout", "scgi_next_upstream_tries",
2363 "scgi_next_upstream_timeout", "uwsgi_next_upstream_tries", and
2364 "uwsgi_next_upstream_timeout" directives.
2365
2366 *) Bugfix: in the "if" parameter of the "access_log" directive.
2367
2368 *) Bugfix: in the ngx_http_perl_module.
2369 Thanks to Piotr Sikora.
2370
2371 *) Bugfix: the "listen" directive of the mail proxy module did not allow
2372 to specify more than two parameters.
2373
2374 *) Bugfix: the "sub_filter" directive did not work with a string to
2375 replace consisting of a single character.
2376
2377 *) Bugfix: requests might hang if resolver was used and a timeout
2378 occurred during a DNS request.
2379
2380 *) Bugfix: in the ngx_http_spdy_module when using with AIO.
2381
2382 *) Bugfix: a segmentation fault might occur in a worker process if the
2383 "set" directive was used to change the "$http_...", "$sent_http_...",
2384 or "$upstream_http_..." variables.
2385
2386 *) Bugfix: in memory allocation error handling.
2387 Thanks to Markus Linnala and Feng Gu.
2388
2389
2390 Changes with nginx 1.7.4 05 Aug 2014
2391
2392 *) Security: pipelined commands were not discarded after STARTTLS
2393 command in SMTP proxy (CVE-2014-3556); the bug had appeared in 1.5.6.
2394 Thanks to Chris Boulton.
2395
2396 *) Change: URI escaping now uses uppercase hexadecimal digits.
2397 Thanks to Piotr Sikora.
2398
2399 *) Feature: now nginx can be build with BoringSSL and LibreSSL.
2400 Thanks to Piotr Sikora.
2401
2402 *) Bugfix: requests might hang if resolver was used and a DNS server
2403 returned a malformed response; the bug had appeared in 1.5.8.
2404
2405 *) Bugfix: in the ngx_http_spdy_module.
2406 Thanks to Piotr Sikora.
2407
2408 *) Bugfix: the $uri variable might contain garbage when returning errors
2409 with code 400.
2410 Thanks to Sergey Bobrov.
2411
2412 *) Bugfix: in error handling in the "proxy_store" directive and the
2413 ngx_http_dav_module.
2414 Thanks to Feng Gu.
2415
2416 *) Bugfix: a segmentation fault might occur if logging of errors to
2417 syslog was used; the bug had appeared in 1.7.1.
2418
2419 *) Bugfix: the $geoip_latitude, $geoip_longitude, $geoip_dma_code, and
2420 $geoip_area_code variables might not work.
2421 Thanks to Yichun Zhang.
2422
2423 *) Bugfix: in memory allocation error handling.
2424 Thanks to Tatsuhiko Kubo and Piotr Sikora.
2425
2426
2427 Changes with nginx 1.7.3 08 Jul 2014
2428
2429 *) Feature: weak entity tags are now preserved on response
2430 modifications, and strong ones are changed to weak.
2431
2432 *) Feature: cache revalidation now uses If-None-Match header if
2433 possible.
2434
2435 *) Feature: the "ssl_password_file" directive.
2436
2437 *) Bugfix: the If-None-Match request header line was ignored if there
2438 was no Last-Modified header in a response returned from cache.
2439
2440 *) Bugfix: "peer closed connection in SSL handshake" messages were
2441 logged at "info" level instead of "error" while connecting to
2442 backends.
2443
2444 *) Bugfix: in the ngx_http_dav_module module in nginx/Windows.
2445
2446 *) Bugfix: SPDY connections might be closed prematurely if caching was
2447 used.
2448
2449
2450 Changes with nginx 1.7.2 17 Jun 2014
2451
2452 *) Feature: the "hash" directive inside the "upstream" block.
2453
2454 *) Feature: defragmentation of free shared memory blocks.
2455 Thanks to Wandenberg Peixoto and Yichun Zhang.
2456
2457 *) Bugfix: a segmentation fault might occur in a worker process if the
2458 default value of the "access_log" directive was used; the bug had
2459 appeared in 1.7.0.
2460 Thanks to Piotr Sikora.
2461
2462 *) Bugfix: trailing slash was mistakenly removed from the last parameter
2463 of the "try_files" directive.
2464
2465 *) Bugfix: nginx could not be built on OS X in some cases.
2466
2467 *) Bugfix: in the ngx_http_spdy_module.
2468
2469
2470 Changes with nginx 1.7.1 27 May 2014
2471
2472 *) Feature: the "$upstream_cookie_..." variables.
2473
2474 *) Feature: the $ssl_client_fingerprint variable.
2475
2476 *) Feature: the "error_log" and "access_log" directives now support
2477 logging to syslog.
2478
2479 *) Feature: the mail proxy now logs client port on connect.
2480
2481 *) Bugfix: memory leak if the "ssl_stapling" directive was used.
2482 Thanks to Filipe da Silva.
2483
2484 *) Bugfix: the "alias" directive used inside a location given by a
2485 regular expression worked incorrectly if the "if" or "limit_except"
2486 directives were used.
2487
2488 *) Bugfix: the "charset" directive did not set a charset to encoded
2489 backend responses.
2490
2491 *) Bugfix: a "proxy_pass" directive without URI part might use original
2492 request after the $args variable was set.
2493 Thanks to Yichun Zhang.
2494
2495 *) Bugfix: in the "none" parameter in the "smtp_auth" directive; the bug
2496 had appeared in 1.5.6.
2497 Thanks to Svyatoslav Nikolsky.
2498
2499 *) Bugfix: if sub_filter and SSI were used together, then responses
2500 might be transferred incorrectly.
2501
2502 *) Bugfix: nginx could not be built with the --with-file-aio option on
2503 Linux/aarch64.
2504
2505
2506 Changes with nginx 1.7.0 24 Apr 2014
2507
2508 *) Feature: backend SSL certificate verification.
2509
2510 *) Feature: support for SNI while working with SSL backends.
2511
2512 *) Feature: the $ssl_server_name variable.
2513
2514 *) Feature: the "if" parameter of the "access_log" directive.
2515
2516
2517 Changes with nginx 1.5.13 08 Apr 2014
2518
2519 *) Change: improved hash table handling; the default values of the
2520 "variables_hash_max_size" and "types_hash_bucket_size" were changed
2521 to 1024 and 64 respectively.
2522
2523 *) Feature: the ngx_http_mp4_module now supports the "end" argument.
2524
2525 *) Feature: byte ranges support in the ngx_http_mp4_module and while
2526 saving responses to cache.
2527
2528 *) Bugfix: alerts "ngx_slab_alloc() failed: no memory" no longer logged
2529 when using shared memory in the "ssl_session_cache" directive and in
2530 the ngx_http_limit_req_module.
2531
2532 *) Bugfix: the "underscores_in_headers" directive did not allow
2533 underscore as a first character of a header.
2534 Thanks to Piotr Sikora.
2535
2536 *) Bugfix: cache manager might hog CPU on exit in nginx/Windows.
2537
2538 *) Bugfix: nginx/Windows terminated abnormally if the
2539 "ssl_session_cache" directive was used with the "shared" parameter.
2540
2541 *) Bugfix: in the ngx_http_spdy_module.
2542
2543
2544 Changes with nginx 1.5.12 18 Mar 2014
2545
2546 *) Security: a heap memory buffer overflow might occur in a worker
2547 process while handling a specially crafted request by
2548 ngx_http_spdy_module, potentially resulting in arbitrary code
2549 execution (CVE-2014-0133).
2550 Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr.
2551 Manuel Sadosky, Buenos Aires, Argentina.
2552
2553 *) Feature: the "proxy_protocol" parameters of the "listen" and
2554 "real_ip_header" directives, the $proxy_protocol_addr variable.
2555
2556 *) Bugfix: in the "fastcgi_next_upstream" directive.
2557 Thanks to Lucas Molas.
2558
2559
2560 Changes with nginx 1.5.11 04 Mar 2014
2561
2562 *) Security: memory corruption might occur in a worker process on 32-bit
2563 platforms while handling a specially crafted request by
2564 ngx_http_spdy_module, potentially resulting in arbitrary code
2565 execution (CVE-2014-0088); the bug had appeared in 1.5.10.
2566 Thanks to Lucas Molas, researcher at Programa STIC, Fundación Dr.
2567 Manuel Sadosky, Buenos Aires, Argentina.
2568
2569 *) Feature: the $ssl_session_reused variable.
2570
2571 *) Bugfix: the "client_max_body_size" directive might not work when
2572 reading a request body using chunked transfer encoding; the bug had
2573 appeared in 1.3.9.
2574 Thanks to Lucas Molas.
2575
2576 *) Bugfix: a segmentation fault might occur in a worker process when
2577 proxying WebSocket connections.
2578
2579 *) Bugfix: a segmentation fault might occur in a worker process if the
2580 ngx_http_spdy_module was used on 32-bit platforms; the bug had
2581 appeared in 1.5.10.
2582
2583 *) Bugfix: the $upstream_status variable might contain wrong data if the
2584 "proxy_cache_use_stale" or "proxy_cache_revalidate" directives were
2585 used.
2586 Thanks to Piotr Sikora.
2587
2588 *) Bugfix: a segmentation fault might occur in a worker process if
2589 errors with code 400 were redirected to a named location using the
2590 "error_page" directive.
2591
2592 *) Bugfix: nginx/Windows could not be built with Visual Studio 2013.
2593
2594
2595 Changes with nginx 1.5.10 04 Feb 2014
2596
2597 *) Feature: the ngx_http_spdy_module now uses SPDY 3.1 protocol.
2598 Thanks to Automattic and MaxCDN for sponsoring this work.
2599
2600 *) Feature: the ngx_http_mp4_module now skips tracks too short for a
2601 seek requested.
2602
2603 *) Bugfix: a segmentation fault might occur in a worker process if the
2604 $ssl_session_id variable was used in logs; the bug had appeared in
2605 1.5.9.
2606
2607 *) Bugfix: the $date_local and $date_gmt variables used wrong format
2608 outside of the ngx_http_ssi_filter_module.
2609
2610 *) Bugfix: client connections might be immediately closed if deferred
2611 accept was used; the bug had appeared in 1.3.15.
2612
2613 *) Bugfix: alerts "getsockopt(TCP_FASTOPEN) ... failed" appeared in logs
2614 during binary upgrade on Linux; the bug had appeared in 1.5.8.
2615 Thanks to Piotr Sikora.
2616
2617
2618 Changes with nginx 1.5.9 22 Jan 2014
2619
2620 *) Change: now nginx expects escaped URIs in "X-Accel-Redirect" headers.
2621
2622 *) Feature: the "ssl_buffer_size" directive.
2623
2624 *) Feature: the "limit_rate" directive can now be used to rate limit
2625 responses sent in SPDY connections.
2626
2627 *) Feature: the "spdy_chunk_size" directive.
2628
2629 *) Feature: the "ssl_session_tickets" directive.
2630 Thanks to Dirkjan Bussink.
2631
2632 *) Bugfix: the $ssl_session_id variable contained full session
2633 serialized instead of just a session id.
2634 Thanks to Ivan Ristić.
2635
2636 *) Bugfix: nginx incorrectly handled escaped "?" character in the
2637 "include" SSI command.
2638
2639 *) Bugfix: the ngx_http_dav_module did not unescape destination URI of
2640 the COPY and MOVE methods.
2641
2642 *) Bugfix: resolver did not understand domain names with a trailing dot.
2643 Thanks to Yichun Zhang.
2644
2645 *) Bugfix: alerts "zero size buf in output" might appear in logs while
2646 proxying; the bug had appeared in 1.3.9.
2647
2648 *) Bugfix: a segmentation fault might occur in a worker process if the
2649 ngx_http_spdy_module was used.
2650
2651 *) Bugfix: proxied WebSocket connections might hang right after
2652 handshake if the select, poll, or /dev/poll methods were used.
2653
2654 *) Bugfix: the "xclient" directive of the mail proxy module incorrectly
2655 handled IPv6 client addresses.
2656
2657
2658 Changes with nginx 1.5.8 17 Dec 2013
2659
2660 *) Feature: IPv6 support in resolver.
2661
2662 *) Feature: the "listen" directive supports the "fastopen" parameter.
2663 Thanks to Mathew Rodley.
2664
2665 *) Feature: SSL support in the ngx_http_uwsgi_module.
2666 Thanks to Roberto De Ioris.
2667
2668 *) Feature: vim syntax highlighting scripts were added to contrib.
2669 Thanks to Evan Miller.
2670
2671 *) Bugfix: a timeout might occur while reading client request body in an
2672 SSL connection using chunked transfer encoding.
2673
2674 *) Bugfix: the "master_process" directive did not work correctly in
2675 nginx/Windows.
2676
2677 *) Bugfix: the "setfib" parameter of the "listen" directive might not
2678 work.
2679
2680 *) Bugfix: in the ngx_http_spdy_module.
2681
2682
2683 Changes with nginx 1.5.7 19 Nov 2013
2684
2685 *) Security: a character following an unescaped space in a request line
2686 was handled incorrectly (CVE-2013-4547); the bug had appeared in
2687 0.8.41.
2688 Thanks to Ivan Fratric of the Google Security Team.
2689
2690 *) Change: a logging level of auth_basic errors about no user/password
2691 provided has been lowered from "error" to "info".
2692
2693 *) Feature: the "proxy_cache_revalidate", "fastcgi_cache_revalidate",
2694 "scgi_cache_revalidate", and "uwsgi_cache_revalidate" directives.
2695
2696 *) Feature: the "ssl_session_ticket_key" directive.
2697 Thanks to Piotr Sikora.
2698
2699 *) Bugfix: the directive "add_header Cache-Control ''" added a
2700 "Cache-Control" response header line with an empty value.
2701
2702 *) Bugfix: the "satisfy any" directive might return 403 error instead of
2703 401 if auth_request and auth_basic directives were used.
2704 Thanks to Jan Marc Hoffmann.
2705
2706 *) Bugfix: the "accept_filter" and "deferred" parameters of the "listen"
2707 directive were ignored for listen sockets created during binary
2708 upgrade.
2709 Thanks to Piotr Sikora.
2710
2711 *) Bugfix: some data received from a backend with unbufferred proxy
2712 might not be sent to a client immediately if "gzip" or "gunzip"
2713 directives were used.
2714 Thanks to Yichun Zhang.
2715
2716 *) Bugfix: in error handling in ngx_http_gunzip_filter_module.
2717
2718 *) Bugfix: responses might hang if the ngx_http_spdy_module was used
2719 with the "auth_request" directive.
2720
2721 *) Bugfix: memory leak in nginx/Windows.
2722
2723
2724 Changes with nginx 1.5.6 01 Oct 2013
2725
2726 *) Feature: the "fastcgi_buffering" directive.
2727
2728 *) Feature: the "proxy_ssl_protocols" and "proxy_ssl_ciphers"
2729 directives.
2730 Thanks to Piotr Sikora.
2731
2732 *) Feature: optimization of SSL handshakes when using long certificate
2733 chains.
2734
2735 *) Feature: the mail proxy supports SMTP pipelining.
2736
2737 *) Bugfix: in the ngx_http_auth_basic_module when using "$apr1$"
2738 password encryption method.
2739 Thanks to Markus Linnala.
2740
2741 *) Bugfix: in MacOSX, Cygwin, and nginx/Windows incorrect location might
2742 be used to process a request if locations were given using characters
2743 in different cases.
2744
2745 *) Bugfix: automatic redirect with appended trailing slash for proxied
2746 locations might not work.
2747
2748 *) Bugfix: in the mail proxy server.
2749
2750 *) Bugfix: in the ngx_http_spdy_module.
2751
2752
2753 Changes with nginx 1.5.5 17 Sep 2013
2754
2755 *) Change: now nginx assumes HTTP/1.0 by default if it is not able to
2756 detect protocol reliably.
2757
2758 *) Feature: the "disable_symlinks" directive now uses O_PATH on Linux.
2759
2760 *) Feature: now nginx uses EPOLLRDHUP events to detect premature
2761 connection close by clients if the "epoll" method is used.
2762
2763 *) Bugfix: in the "valid_referers" directive if the "server_names"
2764 parameter was used.
2765
2766 *) Bugfix: the $request_time variable did not work in nginx/Windows.
2767
2768 *) Bugfix: in the "image_filter" directive.
2769 Thanks to Lanshun Zhou.
2770
2771 *) Bugfix: OpenSSL 1.0.1f compatibility.
2772 Thanks to Piotr Sikora.
2773
2774
2775 Changes with nginx 1.5.4 27 Aug 2013
2776
2777 *) Change: the "js" extension MIME type has been changed to
2778 "application/javascript"; default value of the "charset_types"
2779 directive was changed accordingly.
2780
2781 *) Change: now the "image_filter" directive with the "size" parameter
2782 returns responses with the "application/json" MIME type.
2783
2784 *) Feature: the ngx_http_auth_request_module.
2785
2786 *) Bugfix: a segmentation fault might occur on start or during
2787 reconfiguration if the "try_files" directive was used with an empty
2788 parameter.
2789
2790 *) Bugfix: memory leak if relative paths were specified using variables
2791 in the "root" or "auth_basic_user_file" directives.
2792
2793 *) Bugfix: the "valid_referers" directive incorrectly executed regular
2794 expressions if a "Referer" header started with "https://".
2795 Thanks to Liangbin Li.
2796
2797 *) Bugfix: responses might hang if subrequests were used and an SSL
2798 handshake error happened during subrequest processing.
2799 Thanks to Aviram Cohen.
2800
2801 *) Bugfix: in the ngx_http_autoindex_module.
2802
2803 *) Bugfix: in the ngx_http_spdy_module.
2804
2805
2806 Changes with nginx 1.5.3 30 Jul 2013
2807
2808 *) Change in internal API: now u->length defaults to -1 if working with
2809 backends in unbuffered mode.
2810
2811 *) Change: now after receiving an incomplete response from a backend
2812 server nginx tries to send an available part of the response to a
2813 client, and then closes client connection.
2814
2815 *) Bugfix: a segmentation fault might occur in a worker process if the
2816 ngx_http_spdy_module was used with the "client_body_in_file_only"
2817 directive.
2818
2819 *) Bugfix: the "so_keepalive" parameter of the "listen" directive might
2820 be handled incorrectly on DragonFlyBSD.
2821 Thanks to Sepherosa Ziehau.
2822
2823 *) Bugfix: in the ngx_http_xslt_filter_module.
2824
2825 *) Bugfix: in the ngx_http_sub_filter_module.
2826
2827
2828 Changes with nginx 1.5.2 02 Jul 2013
2829
2830 *) Feature: now several "error_log" directives can be used.
2831
2832 *) Bugfix: the $r->header_in() embedded perl method did not return value
2833 of the "Cookie" and "X-Forwarded-For" request header lines; the bug
2834 had appeared in 1.3.14.
2835
2836 *) Bugfix: in the ngx_http_spdy_module.
2837 Thanks to Jim Radford.
2838
2839 *) Bugfix: nginx could not be built on Linux with x32 ABI.
2840 Thanks to Serguei Ivantsov.
2841
2842
2843 Changes with nginx 1.5.1 04 Jun 2013
2844
2845 *) Feature: the "ssi_last_modified", "sub_filter_last_modified", and
2846 "xslt_last_modified" directives.
2847 Thanks to Alexey Kolpakov.
2848
2849 *) Feature: the "http_403" parameter of the "proxy_next_upstream",
2850 "fastcgi_next_upstream", "scgi_next_upstream", and
2851 "uwsgi_next_upstream" directives.
2852
2853 *) Feature: the "allow" and "deny" directives now support unix domain
2854 sockets.
2855
2856 *) Bugfix: nginx could not be built with the ngx_mail_ssl_module, but
2857 without ngx_http_ssl_module; the bug had appeared in 1.3.14.
2858
2859 *) Bugfix: in the "proxy_set_body" directive.
2860 Thanks to Lanshun Zhou.
2861
2862 *) Bugfix: in the "lingering_time" directive.
2863 Thanks to Lanshun Zhou.
2864
2865 *) Bugfix: the "fail_timeout" parameter of the "server" directive in the
2866 "upstream" context might not work if "max_fails" parameter was used;
2867 the bug had appeared in 1.3.0.
2868
2869 *) Bugfix: a segmentation fault might occur in a worker process if the
2870 "ssl_stapling" directive was used.
2871 Thanks to Piotr Sikora.
2872
2873 *) Bugfix: in the mail proxy server.
2874 Thanks to Filipe Da Silva.
2875
2876 *) Bugfix: nginx/Windows might stop accepting connections if several
2877 worker processes were used.
2878
2879
2880 Changes with nginx 1.5.0 07 May 2013
2881
2882 *) Security: a stack-based buffer overflow might occur in a worker
2883 process while handling a specially crafted request, potentially
2884 resulting in arbitrary code execution (CVE-2013-2028); the bug had
2885 appeared in 1.3.9.
2886 Thanks to Greg MacManus, iSIGHT Partners Labs.
2887
2888
2889 Changes with nginx 1.4.0 24 Apr 2013
2890
2891 *) Bugfix: nginx could not be built with the ngx_http_perl_module if the
2892 --with-openssl option was used; the bug had appeared in 1.3.16.
2893
2894 *) Bugfix: in a request body handling in the ngx_http_perl_module; the
2895 bug had appeared in 1.3.9.
2896
2897
2898 Changes with nginx 1.3.16 16 Apr 2013
2899
2900 *) Bugfix: a segmentation fault might occur in a worker process if
2901 subrequests were used; the bug had appeared in 1.3.9.
2902
2903 *) Bugfix: the "tcp_nodelay" directive caused an error if a WebSocket
2904 connection was proxied into a unix domain socket.
2905
2906 *) Bugfix: the $upstream_response_length variable has an incorrect value
2907 "0" if buffering was not used.
2908 Thanks to Piotr Sikora.
2909
2910 *) Bugfix: in the eventport and /dev/poll methods.
2911
2912
2913 Changes with nginx 1.3.15 26 Mar 2013
2914
2915 *) Change: opening and closing a connection without sending any data in
2916 it is no longer logged to access_log with error code 400.
2917
2918 *) Feature: the ngx_http_spdy_module.
2919 Thanks to Automattic for sponsoring this work.
2920
2921 *) Feature: the "limit_req_status" and "limit_conn_status" directives.
2922 Thanks to Nick Marden.
2923
2924 *) Feature: the "image_filter_interlace" directive.
2925 Thanks to Ian Babrou.
2926
2927 *) Feature: $connections_waiting variable in the
2928 ngx_http_stub_status_module.
2929
2930 *) Feature: the mail proxy module now supports IPv6 backends.
2931
2932 *) Bugfix: request body might be transmitted incorrectly when retrying a
2933 request to the next upstream server; the bug had appeared in 1.3.9.
2934 Thanks to Piotr Sikora.
2935
2936 *) Bugfix: in the "client_body_in_file_only" directive; the bug had
2937 appeared in 1.3.9.
2938
2939 *) Bugfix: responses might hang if subrequests were used and a DNS error
2940 happened during subrequest processing.
2941 Thanks to Lanshun Zhou.
2942
2943 *) Bugfix: in backend usage accounting.
2944
2945
2946 Changes with nginx 1.3.14 05 Mar 2013
2947
2948 *) Feature: $connections_active, $connections_reading, and
2949 $connections_writing variables in the ngx_http_stub_status_module.
2950
2951 *) Feature: support of WebSocket connections in the
2952 ngx_http_uwsgi_module and ngx_http_scgi_module.
2953
2954 *) Bugfix: in virtual servers handling with SNI.
2955
2956 *) Bugfix: new sessions were not always stored if the "ssl_session_cache
2957 shared" directive was used and there was no free space in shared
2958 memory.
2959 Thanks to Piotr Sikora.
2960
2961 *) Bugfix: multiple X-Forwarded-For headers were handled incorrectly.
2962 Thanks to Neal Poole for sponsoring this work.
2963
2964 *) Bugfix: in the ngx_http_mp4_module.
2965 Thanks to Gernot Vormayr.
2966
2967
2968 Changes with nginx 1.3.13 19 Feb 2013
2969
2970 *) Change: a compiler with name "cc" is now used by default.
2971
2972 *) Feature: support for proxying of WebSocket connections.
2973 Thanks to Apcera and CloudBees for sponsoring this work.
2974
2975 *) Feature: the "auth_basic_user_file" directive supports "{SHA}"
2976 password encryption method.
2977 Thanks to Louis Opter.
2978
2979
2980 Changes with nginx 1.3.12 05 Feb 2013
2981
2982 *) Feature: variables support in the "proxy_bind", "fastcgi_bind",
2983 "memcached_bind", "scgi_bind", and "uwsgi_bind" directives.
2984
2985 *) Feature: the $pipe, $request_length, $time_iso8601, and $time_local
2986 variables can now be used not only in the "log_format" directive.
2987 Thanks to Kiril Kalchev.
2988
2989 *) Feature: IPv6 support in the ngx_http_geoip_module.
2990 Thanks to Gregor Kališnik.
2991
2992 *) Bugfix: in the "proxy_method" directive.
2993
2994 *) Bugfix: a segmentation fault might occur in a worker process if
2995 resolver was used with the poll method.
2996
2997 *) Bugfix: nginx might hog CPU during SSL handshake with a backend if
2998 the select, poll, or /dev/poll methods were used.
2999
3000 *) Bugfix: the "[crit] SSL_write() failed (SSL:)" error.
3001
3002 *) Bugfix: in the "client_body_in_file_only" directive; the bug had
3003 appeared in 1.3.9.
3004
3005 *) Bugfix: in the "fastcgi_keep_conn" directive.
3006
3007
3008 Changes with nginx 1.3.11 10 Jan 2013
3009
3010 *) Bugfix: a segmentation fault might occur if logging was used; the bug
3011 had appeared in 1.3.10.
3012
3013 *) Bugfix: the "proxy_pass" directive did not work with IP addresses
3014 without port specified; the bug had appeared in 1.3.10.
3015
3016 *) Bugfix: a segmentation fault occurred on start or during
3017 reconfiguration if the "keepalive" directive was specified more than
3018 once in a single upstream block.
3019
3020 *) Bugfix: parameter "default" of the "geo" directive did not set
3021 default value for IPv6 addresses.
3022
3023
3024 Changes with nginx 1.3.10 25 Dec 2012
3025
3026 *) Change: domain names specified in configuration file are now resolved
3027 to IPv6 addresses as well as IPv4 ones.
3028
3029 *) Change: now if the "include" directive with mask is used on Unix
3030 systems, included files are sorted in alphabetical order.
3031
3032 *) Change: the "add_header" directive adds headers to 201 responses.
3033
3034 *) Feature: the "geo" directive now supports IPv6 addresses in CIDR
3035 notation.
3036
3037 *) Feature: the "flush" and "gzip" parameters of the "access_log"
3038 directive.
3039
3040 *) Feature: variables support in the "auth_basic" directive.
3041
3042 *) Bugfix: nginx could not be built with the ngx_http_perl_module in
3043 some cases.
3044
3045 *) Bugfix: a segmentation fault might occur in a worker process if the
3046 ngx_http_xslt_module was used.
3047
3048 *) Bugfix: nginx could not be built on MacOSX in some cases.
3049 Thanks to Piotr Sikora.
3050
3051 *) Bugfix: the "limit_rate" directive with high rates might result in
3052 truncated responses on 32-bit platforms.
3053 Thanks to Alexey Antropov.
3054
3055 *) Bugfix: a segmentation fault might occur in a worker process if the
3056 "if" directive was used.
3057 Thanks to Piotr Sikora.
3058
3059 *) Bugfix: a "100 Continue" response was issued with "413 Request Entity
3060 Too Large" responses.
3061
3062 *) Bugfix: the "image_filter", "image_filter_jpeg_quality" and
3063 "image_filter_sharpen" directives might be inherited incorrectly.
3064 Thanks to Ian Babrou.
3065
3066 *) Bugfix: "crypt_r() failed" errors might appear if the "auth_basic"
3067 directive was used on Linux.
3068
3069 *) Bugfix: in backup servers handling.
3070 Thanks to Thomas Chen.
3071
3072 *) Bugfix: proxied HEAD requests might return incorrect response if the
3073 "gzip" directive was used.
3074
3075
3076 Changes with nginx 1.3.9 27 Nov 2012
3077
3078 *) Feature: support for chunked transfer encoding while reading client
3079 request body.
3080
3081 *) Feature: the $request_time and $msec variables can now be used not
3082 only in the "log_format" directive.
3083
3084 *) Bugfix: cache manager and cache loader processes might not be able to
3085 start if more than 512 listen sockets were used.
3086
3087 *) Bugfix: in the ngx_http_dav_module.
3088
3089
3090 Changes with nginx 1.3.8 30 Oct 2012
3091
3092 *) Feature: the "optional_no_ca" parameter of the "ssl_verify_client"
3093 directive.
3094 Thanks to Mike Kazantsev and Eric O'Connor.
3095
3096 *) Feature: the $bytes_sent, $connection, and $connection_requests
3097 variables can now be used not only in the "log_format" directive.
3098 Thanks to Benjamin Grössing.
3099
3100 *) Feature: the "auto" parameter of the "worker_processes" directive.
3101
3102 *) Bugfix: "cache file ... has md5 collision" alert.
3103
3104 *) Bugfix: in the ngx_http_gunzip_filter_module.
3105
3106 *) Bugfix: in the "ssl_stapling" directive.
3107
3108
3109 Changes with nginx 1.3.7 02 Oct 2012
3110
3111 *) Feature: OCSP stapling support.
3112 Thanks to Comodo, DigiCert and GlobalSign for sponsoring this work.
3113
3114 *) Feature: the "ssl_trusted_certificate" directive.
3115
3116 *) Feature: resolver now randomly rotates addresses returned from cache.
3117 Thanks to Anton Jouline.
3118
3119 *) Bugfix: OpenSSL 0.9.7 compatibility.
3120
3121
3122 Changes with nginx 1.3.6 12 Sep 2012
3123
3124 *) Feature: the ngx_http_gunzip_filter_module.
3125
3126 *) Feature: the "memcached_gzip_flag" directive.
3127
3128 *) Feature: the "always" parameter of the "gzip_static" directive.
3129
3130 *) Bugfix: in the "limit_req" directive; the bug had appeared in 1.1.14.
3131 Thanks to Charles Chen.
3132
3133 *) Bugfix: nginx could not be built by gcc 4.7 with -O2 optimization if
3134 the --with-ipv6 option was used.
3135
3136
3137 Changes with nginx 1.3.5 21 Aug 2012
3138
3139 *) Change: the ngx_http_mp4_module module no longer skips tracks in
3140 formats other than H.264 and AAC.
3141
3142 *) Bugfix: a segmentation fault might occur in a worker process if the
3143 "map" directive was used with variables as values.
3144
3145 *) Bugfix: a segmentation fault might occur in a worker process if the
3146 "geo" directive was used with the "ranges" parameter but without the
3147 "default" parameter; the bug had appeared in 0.8.43.
3148 Thanks to Zhen Chen and Weibin Yao.
3149
3150 *) Bugfix: in the -p command-line parameter handling.
3151
3152 *) Bugfix: in the mail proxy server.
3153
3154 *) Bugfix: of minor potential bugs.
3155 Thanks to Coverity.
3156
3157 *) Bugfix: nginx/Windows could not be built with Visual Studio 2005
3158 Express.
3159 Thanks to HAYASHI Kentaro.
3160
3161
3162 Changes with nginx 1.3.4 31 Jul 2012
3163
3164 *) Change: the "ipv6only" parameter is now turned on by default for
3165 listening IPv6 sockets.
3166
3167 *) Feature: the Clang compiler support.
3168
3169 *) Bugfix: extra listening sockets might be created.
3170 Thanks to Roman Odaisky.
3171
3172 *) Bugfix: nginx/Windows might hog CPU if a worker process failed to
3173 start.
3174 Thanks to Ricardo Villalobos Guevara.
3175
3176 *) Bugfix: the "proxy_pass_header", "fastcgi_pass_header",
3177 "scgi_pass_header", "uwsgi_pass_header", "proxy_hide_header",
3178 "fastcgi_hide_header", "scgi_hide_header", and "uwsgi_hide_header"
3179 directives might be inherited incorrectly.
3180
3181
3182 Changes with nginx 1.3.3 10 Jul 2012
3183
3184 *) Feature: entity tags support and the "etag" directive.
3185
3186 *) Bugfix: trailing dot in a source value was not ignored if the "map"
3187 directive was used with the "hostnames" parameter.
3188
3189 *) Bugfix: incorrect location might be used to process a request if a
3190 URI was changed via a "rewrite" directive before an internal redirect
3191 to a named location.
3192
3193
3194 Changes with nginx 1.3.2 26 Jun 2012
3195
3196 *) Change: the "single" parameter of the "keepalive" directive is now
3197 ignored.
3198
3199 *) Change: SSL compression is now disabled when using all versions of
3200 OpenSSL, including ones prior to 1.0.0.
3201
3202 *) Feature: it is now possible to use the "ip_hash" directive to balance
3203 IPv6 clients.
3204
3205 *) Feature: the $status variable can now be used not only in the
3206 "log_format" directive.
3207
3208 *) Bugfix: a segmentation fault might occur in a worker process on
3209 shutdown if the "resolver" directive was used.
3210
3211 *) Bugfix: a segmentation fault might occur in a worker process if the
3212 ngx_http_mp4_module was used.
3213
3214 *) Bugfix: in the ngx_http_mp4_module.
3215
3216 *) Bugfix: a segmentation fault might occur in a worker process if
3217 conflicting wildcard server names were used.
3218
3219 *) Bugfix: nginx might be terminated abnormally on a SIGBUS signal on
3220 ARM platform.
3221
3222 *) Bugfix: an alert "sendmsg() failed (9: Bad file number)" on HP-UX
3223 while reconfiguration.
3224
3225
3226 Changes with nginx 1.3.1 05 Jun 2012
3227
3228 *) Security: now nginx/Windows ignores trailing dot in URI path
3229 component, and does not allow URIs with ":$" in it.
3230 Thanks to Vladimir Kochetkov, Positive Research Center.
3231
3232 *) Feature: the "proxy_pass", "fastcgi_pass", "scgi_pass", "uwsgi_pass"
3233 directives, and the "server" directive inside the "upstream" block,
3234 now support IPv6 addresses.
3235
3236 *) Feature: the "resolver" directive now supports IPv6 addresses and an
3237 optional port specification.
3238
3239 *) Feature: the "least_conn" directive inside the "upstream" block.
3240
3241 *) Feature: it is now possible to specify a weight for servers while
3242 using the "ip_hash" directive.
3243
3244 *) Bugfix: a segmentation fault might occur in a worker process if the
3245 "image_filter" directive was used; the bug had appeared in 1.3.0.
3246
3247 *) Bugfix: nginx could not be built with ngx_cpp_test_module; the bug
3248 had appeared in 1.1.12.
3249
3250 *) Bugfix: access to variables from SSI and embedded perl module might
3251 not work after reconfiguration.
3252 Thanks to Yichun Zhang.
3253
3254 *) Bugfix: in the ngx_http_xslt_filter_module.
3255 Thanks to Kuramoto Eiji.
3256
3257 *) Bugfix: memory leak if $geoip_org variable was used.
3258 Thanks to Denis F. Latypoff.
3259
3260 *) Bugfix: in the "proxy_cookie_domain" and "proxy_cookie_path"
3261 directives.
3262
3263
3264 Changes with nginx 1.3.0 15 May 2012
3265
3266 *) Feature: the "debug_connection" directive now supports IPv6 addresses
3267 and the "unix:" parameter.
3268
3269 *) Feature: the "set_real_ip_from" directive and the "proxy" parameter
3270 of the "geo" directive now support IPv6 addresses.
3271
3272 *) Feature: the "real_ip_recursive", "geoip_proxy", and
3273 "geoip_proxy_recursive" directives.
3274
3275 *) Feature: the "proxy_recursive" parameter of the "geo" directive.
3276
3277 *) Bugfix: a segmentation fault might occur in a worker process if the
3278 "resolver" directive was used.
3279
3280 *) Bugfix: a segmentation fault might occur in a worker process if the
3281 "fastcgi_pass", "scgi_pass", or "uwsgi_pass" directives were used and
3282 backend returned incorrect response.
3283
3284 *) Bugfix: a segmentation fault might occur in a worker process if the
3285 "rewrite" directive was used and new request arguments in a
3286 replacement used variables.
3287
3288 *) Bugfix: nginx might hog CPU if the open file resource limit was
3289 reached.
3290
3291 *) Bugfix: nginx might loop infinitely over backends if the
3292 "proxy_next_upstream" directive with the "http_404" parameter was
3293 used and there were backup servers specified in an upstream block.
3294
3295 *) Bugfix: adding the "down" parameter of the "server" directive might
3296 cause unneeded client redistribution among backend servers if the
3297 "ip_hash" directive was used.
3298
3299 *) Bugfix: socket leak.
3300 Thanks to Yichun Zhang.
3301
3302 *) Bugfix: in the ngx_http_fastcgi_module.
3303
3304
3305 Changes with nginx 1.2.0 23 Apr 2012
3306
3307 *) Bugfix: a segmentation fault might occur in a worker process if the
3308 "try_files" directive was used; the bug had appeared in 1.1.19.
3309
3310 *) Bugfix: response might be truncated if there were more than IOV_MAX
3311 buffers used.
3312
3313 *) Bugfix: in the "crop" parameter of the "image_filter" directive.
3314 Thanks to Maxim Bublis.
3315
3316
3317 Changes with nginx 1.1.19 12 Apr 2012
3318
3319 *) Security: specially crafted mp4 file might allow to overwrite memory
3320 locations in a worker process if the ngx_http_mp4_module was used,
3321 potentially resulting in arbitrary code execution (CVE-2012-2089).
3322 Thanks to Matthew Daley.
3323
3324 *) Bugfix: nginx/Windows might be terminated abnormally.
3325 Thanks to Vincent Lee.
3326
3327 *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
3328 "backup".
3329
3330 *) Bugfix: the "allow" and "deny" directives might be inherited
3331 incorrectly if they were used with IPv6 addresses.
3332
3333 *) Bugfix: the "modern_browser" and "ancient_browser" directives might
3334 be inherited incorrectly.
3335
3336 *) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC.
3337
3338 *) Bugfix: in the ngx_http_mp4_module.
3339
3340
3341 Changes with nginx 1.1.18 28 Mar 2012
3342
3343 *) Change: keepalive connections are no longer disabled for Safari by
3344 default.
3345
3346 *) Feature: the $connection_requests variable.
3347
3348 *) Feature: $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd and
3349 $tcpinfo_rcv_space variables.
3350
3351 *) Feature: the "worker_cpu_affinity" directive now works on FreeBSD.
3352
3353 *) Feature: the "xslt_param" and "xslt_string_param" directives.
3354 Thanks to Samuel Behan.
3355
3356 *) Bugfix: in configure tests.
3357 Thanks to Piotr Sikora.
3358
3359 *) Bugfix: in the ngx_http_xslt_filter_module.
3360
3361 *) Bugfix: nginx could not be built on Debian GNU/Hurd.
3362
3363
3364 Changes with nginx 1.1.17 15 Mar 2012
3365
3366 *) Security: content of previously freed memory might be sent to a
3367 client if backend returned specially crafted response.
3368 Thanks to Matthew Daley.
3369
3370 *) Bugfix: in the embedded perl module if used from SSI.
3371 Thanks to Matthew Daley.
3372
3373 *) Bugfix: in the ngx_http_uwsgi_module.
3374
3375
3376 Changes with nginx 1.1.16 29 Feb 2012
3377
3378 *) Change: the simultaneous subrequest limit has been raised to 200.
3379
3380 *) Feature: the "from" parameter of the "disable_symlinks" directive.
3381
3382 *) Feature: the "return" and "error_page" directives can now be used to
3383 return 307 redirections.
3384
3385 *) Bugfix: a segmentation fault might occur in a worker process if the
3386 "resolver" directive was used and there was no "error_log" directive
3387 specified at global level.
3388 Thanks to Roman Arutyunyan.
3389
3390 *) Bugfix: a segmentation fault might occur in a worker process if the
3391 "proxy_http_version 1.1" or "fastcgi_keep_conn on" directives were
3392 used.
3393
3394 *) Bugfix: memory leaks.
3395 Thanks to Lanshun Zhou.
3396
3397 *) Bugfix: in the "disable_symlinks" directive.
3398
3399 *) Bugfix: on ZFS filesystem disk cache size might be calculated
3400 incorrectly; the bug had appeared in 1.0.1.
3401
3402 *) Bugfix: nginx could not be built by the icc 12.1 compiler.
3403
3404 *) Bugfix: nginx could not be built by gcc on Solaris; the bug had
3405 appeared in 1.1.15.
3406
3407
3408 Changes with nginx 1.1.15 15 Feb 2012
3409
3410 *) Feature: the "disable_symlinks" directive.
3411
3412 *) Feature: the "proxy_cookie_domain" and "proxy_cookie_path"
3413 directives.
3414
3415 *) Bugfix: nginx might log incorrect error "upstream prematurely closed
3416 connection" instead of correct "upstream sent too big header" one.
3417 Thanks to Feibo Li.
3418
3419 *) Bugfix: nginx could not be built with the ngx_http_perl_module if the
3420 --with-openssl option was used.
3421
3422 *) Bugfix: the number of internal redirects to named locations was not
3423 limited.
3424
3425 *) Bugfix: calling $r->flush() multiple times might cause errors in the
3426 ngx_http_gzip_filter_module.
3427
3428 *) Bugfix: temporary files might be not removed if the "proxy_store"
3429 directive was used with SSI includes.
3430
3431 *) Bugfix: in some cases non-cacheable variables (such as the $args
3432 variable) returned old empty cached value.
3433
3434 *) Bugfix: a segmentation fault might occur in a worker process if too
3435 many SSI subrequests were issued simultaneously; the bug had appeared
3436 in 0.7.25.
3437
3438
3439 Changes with nginx 1.1.14 30 Jan 2012
3440
3441 *) Feature: multiple "limit_req" limits may be used simultaneously.
3442
3443 *) Bugfix: in error handling while connecting to a backend.
3444 Thanks to Piotr Sikora.
3445
3446 *) Bugfix: in AIO error handling on FreeBSD.
3447
3448 *) Bugfix: in the OpenSSL library initialization.
3449
3450 *) Bugfix: the "proxy_redirect" directives might be inherited
3451 incorrectly.
3452
3453 *) Bugfix: memory leak during reconfiguration if the "pcre_jit"
3454 directive was used.
3455
3456
3457 Changes with nginx 1.1.13 16 Jan 2012
3458
3459 *) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the
3460 "ssl_protocols" directive.
3461
3462 *) Bugfix: the "limit_req" directive parameters were not inherited
3463 correctly; the bug had appeared in 1.1.12.
3464
3465 *) Bugfix: the "proxy_redirect" directive incorrectly processed
3466 "Refresh" header if regular expression were used.
3467
3468 *) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter
3469 did not return answer from cache if there were no live upstreams.
3470
3471 *) Bugfix: the "worker_cpu_affinity" directive might not work.
3472
3473 *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
3474 1.1.12.
3475
3476 *) Bugfix: in the ngx_http_mp4_module.
3477
3478
3479 Changes with nginx 1.1.12 26 Dec 2011
3480
3481 *) Change: a "proxy_pass" directive without URI part now uses changed
3482 URI after redirection with the "error_page" directive.
3483 Thanks to Lanshun Zhou.
3484
3485 *) Feature: the "proxy/fastcgi/scgi/uwsgi_cache_lock",
3486 "proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives.
3487
3488 *) Feature: the "pcre_jit" directive.
3489
3490 *) Feature: the "if" SSI command supports captures in regular
3491 expressions.
3492
3493 *) Bugfix: the "if" SSI command did not work inside the "block" command.
3494
3495 *) Bugfix: the "limit_conn_log_level" and "limit_req_log_level"
3496 directives might not work.
3497
3498 *) Bugfix: the "limit_rate" directive did not allow to use full
3499 throughput, even if limit value was very high.
3500
3501 *) Bugfix: the "sendfile_max_chunk" directive did not work, if the
3502 "limit_rate" directive was used.
3503
3504 *) Bugfix: a "proxy_pass" directive without URI part always used
3505 original request URI if variables were used.
3506
3507 *) Bugfix: a "proxy_pass" directive without URI part might use original
3508 request after redirection with the "try_files" directive.
3509 Thanks to Lanshun Zhou.
3510
3511 *) Bugfix: in the ngx_http_scgi_module.
3512
3513 *) Bugfix: in the ngx_http_mp4_module.
3514
3515 *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
3516 1.1.9.
3517
3518
3519 Changes with nginx 1.1.11 12 Dec 2011
3520
3521 *) Feature: the "so_keepalive" parameter of the "listen" directive.
3522 Thanks to Vsevolod Stakhov.
3523
3524 *) Feature: the "if_not_empty" parameter of the
3525 "fastcgi/scgi/uwsgi_param" directives.
3526
3527 *) Feature: the $https variable.
3528
3529 *) Feature: the "proxy_redirect" directive supports variables in the
3530 first parameter.
3531
3532 *) Feature: the "proxy_redirect" directive supports regular expressions.
3533
3534 *) Bugfix: the $sent_http_cache_control variable might contain a wrong
3535 value if the "expires" directive was used.
3536 Thanks to Yichun Zhang.
3537
3538 *) Bugfix: the "read_ahead" directive might not work combined with
3539 "try_files" and "open_file_cache".
3540
3541 *) Bugfix: a segmentation fault might occur in a worker process if small
3542 time was used in the "inactive" parameter of the "proxy_cache_path"
3543 directive.
3544
3545 *) Bugfix: responses from cache might hang.
3546
3547
3548 Changes with nginx 1.1.10 30 Nov 2011
3549
3550 *) Bugfix: a segmentation fault occurred in a worker process if AIO was
3551 used on Linux; the bug had appeared in 1.1.9.
3552
3553
3554 Changes with nginx 1.1.9 28 Nov 2011
3555
3556 *) Change: now double quotes are encoded in an "echo" SSI-command
3557 output.
3558 Thanks to Zaur Abasmirzoev.
3559
3560 *) Feature: the "valid" parameter of the "resolver" directive. By
3561 default TTL returned by a DNS server is used.
3562 Thanks to Kirill A. Korinskiy.
3563
3564 *) Bugfix: nginx might hang after a worker process abnormal termination.
3565
3566 *) Bugfix: a segmentation fault might occur in a worker process if SNI
3567 was used; the bug had appeared in 1.1.2.
3568
3569 *) Bugfix: in the "keepalive_disable" directive; the bug had appeared in
3570 1.1.8.
3571 Thanks to Alexander Usov.
3572
3573 *) Bugfix: SIGWINCH signal did not work after first binary upgrade; the
3574 bug had appeared in 1.1.1.
3575
3576 *) Bugfix: backend responses with length not matching "Content-Length"
3577 header line are no longer cached.
3578
3579 *) Bugfix: in the "scgi_param" directive, if complex parameters were
3580 used.
3581
3582 *) Bugfix: in the "epoll" event method.
3583 Thanks to Yichun Zhang.
3584
3585 *) Bugfix: in the ngx_http_flv_module.
3586 Thanks to Piotr Sikora.
3587
3588 *) Bugfix: in the ngx_http_mp4_module.
3589
3590 *) Bugfix: IPv6 addresses are now handled properly in a request line and
3591 in a "Host" request header line.
3592
3593 *) Bugfix: "add_header" and "expires" directives did not work if a
3594 request was proxied and response status code was 206.
3595
3596 *) Bugfix: nginx could not be built on FreeBSD 10.
3597
3598 *) Bugfix: nginx could not be built on AIX.
3599
3600
3601 Changes with nginx 1.1.8 14 Nov 2011
3602
3603 *) Change: the ngx_http_limit_zone_module was renamed to the
3604 ngx_http_limit_conn_module.
3605
3606 *) Change: the "limit_zone" directive was superseded by the
3607 "limit_conn_zone" directive with a new syntax.
3608
3609 *) Feature: support for multiple "limit_conn" limits on the same level.
3610
3611 *) Feature: the "image_filter_sharpen" directive.
3612
3613 *) Bugfix: a segmentation fault might occur in a worker process if
3614 resolver got a big DNS response.
3615 Thanks to Ben Hawkes.
3616
3617 *) Bugfix: in cache key calculation if internal MD5 implementation was
3618 used; the bug had appeared in 1.0.4.
3619
3620 *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
3621 header lines might be passed to backend while caching; or not passed
3622 without caching if caching was enabled in another part of the
3623 configuration.
3624
3625 *) Bugfix: the module ngx_http_mp4_module sent incorrect
3626 "Content-Length" response header line if the "start" argument was
3627 used.
3628 Thanks to Piotr Sikora.
3629
3630
3631 Changes with nginx 1.1.7 31 Oct 2011
3632
3633 *) Feature: support of several DNS servers in the "resolver" directive.
3634 Thanks to Kirill A. Korinskiy.
3635
3636 *) Bugfix: a segmentation fault occurred on start or during
3637 reconfiguration if the "ssl" directive was used at http level and
3638 there was no "ssl_certificate" defined.
3639
3640 *) Bugfix: reduced memory consumption while proxying big files if they
3641 were buffered to disk.
3642
3643 *) Bugfix: a segmentation fault might occur in a worker process if
3644 "proxy_http_version 1.1" directive was used.
3645
3646 *) Bugfix: in the "expires @time" directive.
3647
3648
3649 Changes with nginx 1.1.6 17 Oct 2011
3650
3651 *) Change in internal API: now module context data are cleared while
3652 internal redirect to named location.
3653 Requested by Yichun Zhang.
3654
3655 *) Change: if a server in an upstream failed, only one request will be
3656 sent to it after fail_timeout; the server will be considered alive if
3657 it will successfully respond to the request.
3658
3659 *) Change: now the 0x7F-0xFF characters are escaped as \xXX in an
3660 access_log.
3661
3662 *) Feature: "proxy/fastcgi/scgi/uwsgi_ignore_headers" directives support
3663 the following additional values: X-Accel-Limit-Rate,
3664 X-Accel-Buffering, X-Accel-Charset.
3665
3666 *) Feature: decrease of memory consumption if SSL is used.
3667
3668 *) Bugfix: some UTF-8 characters were processed incorrectly.
3669 Thanks to Alexey Kuts.
3670
3671 *) Bugfix: the ngx_http_rewrite_module directives specified at "server"
3672 level were executed twice if no matching locations were defined.
3673
3674 *) Bugfix: a socket leak might occurred if "aio sendfile" was used.
3675
3676 *) Bugfix: connections with fast clients might be closed after
3677 send_timeout if file AIO was used.
3678
3679 *) Bugfix: in the ngx_http_autoindex_module.
3680
3681 *) Bugfix: the module ngx_http_mp4_module did not support seeking on
3682 32-bit platforms.
3683
3684
3685 Changes with nginx 1.1.5 05 Oct 2011
3686
3687 *) Feature: the "uwsgi_buffering" and "scgi_buffering" directives.
3688 Thanks to Peter Smit.
3689
3690 *) Bugfix: non-cacheable responses might be cached if
3691 "proxy_cache_bypass" directive was used.
3692 Thanks to John Ferlito.
3693
3694 *) Bugfix: in HTTP/1.1 support in the ngx_http_proxy_module.
3695
3696 *) Bugfix: cached responses with an empty body were returned
3697 incorrectly; the bug had appeared in 0.8.31.
3698
3699 *) Bugfix: 201 responses of the ngx_http_dav_module were incorrect; the
3700 bug had appeared in 0.8.32.
3701
3702 *) Bugfix: in the "return" directive.
3703
3704 *) Bugfix: the "ssl_session_cache builtin" directive caused segmentation
3705 fault; the bug had appeared in 1.1.1.
3706
3707
3708 Changes with nginx 1.1.4 20 Sep 2011
3709
3710 *) Feature: the ngx_http_upstream_keepalive module.
3711
3712 *) Feature: the "proxy_http_version" directive.
3713
3714 *) Feature: the "fastcgi_keep_conn" directive.
3715
3716 *) Feature: the "worker_aio_requests" directive.
3717
3718 *) Bugfix: if nginx was built --with-file-aio it could not be run on
3719 Linux kernel which did not support AIO.
3720
3721 *) Bugfix: in Linux AIO error processing.
3722 Thanks to Hagai Avrahami.
3723
3724 *) Bugfix: reduced memory consumption for long-lived requests.
3725
3726 *) Bugfix: the module ngx_http_mp4_module did not support 64-bit MP4
3727 "co64" atom.
3728
3729
3730 Changes with nginx 1.1.3 14 Sep 2011
3731
3732 *) Feature: the module ngx_http_mp4_module.
3733
3734 *) Bugfix: in Linux AIO combined with open_file_cache.
3735
3736 *) Bugfix: open_file_cache did not update file info on retest if file
3737 was not atomically changed.
3738
3739 *) Bugfix: nginx could not be built on MacOSX 10.7.
3740
3741
3742 Changes with nginx 1.1.2 05 Sep 2011
3743
3744 *) Change: now if total size of all ranges is greater than source
3745 response size, then nginx disables ranges and returns just the source
3746 response.
3747
3748 *) Feature: the "max_ranges" directive.
3749
3750 *) Bugfix: the "ssl_verify_client", "ssl_verify_depth", and
3751 "ssl_prefer_server_ciphers" directives might work incorrectly if SNI
3752 was used.
3753
3754 *) Bugfix: in the "proxy/fastcgi/scgi/uwsgi_ignore_client_abort"
3755 directives.
3756
3757
3758 Changes with nginx 1.1.1 22 Aug 2011
3759
3760 *) Change: now cache loader processes either as many files as specified
3761 by "loader_files" parameter or works no longer than time specified by
3762 the "loader_threshold" parameter during each iteration.
3763
3764 *) Change: now SIGWINCH signal works only in daemon mode.
3765
3766 *) Feature: now shared zones and caches use POSIX semaphores on Solaris.
3767 Thanks to Den Ivanov.
3768
3769 *) Feature: accept filters are now supported on NetBSD.
3770
3771 *) Bugfix: nginx could not be built on Linux 3.0.
3772
3773 *) Bugfix: nginx did not use gzipping in some cases; the bug had
3774 appeared in 1.1.0.
3775
3776 *) Bugfix: request body might be processed incorrectly if client used
3777 pipelining.
3778
3779 *) Bugfix: in the "request_body_in_single_buf" directive.
3780
3781 *) Bugfix: in "proxy_set_body" and "proxy_pass_request_body" directives
3782 if SSL connection to backend was used.
3783
3784 *) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
3785 "down".
3786
3787 *) Bugfix: a segmentation fault might occur during reconfiguration if
3788 ssl_session_cache was defined but not used in previous configuration.
3789
3790 *) Bugfix: a segmentation fault might occur in a worker process if many
3791 backup servers were used in an upstream.
3792
3793 *) Bugfix: a segmentation fault might occur in a worker process if
3794 "fastcgi/scgi/uwsgi_param" directives were used with values starting
3795 with "HTTP_"; the bug had appeared in 0.8.40.
3796
3797
3798 Changes with nginx 1.1.0 01 Aug 2011
3799
3800 *) Feature: cache loader run time decrease.
3801
3802 *) Feature: "loader_files", "loader_sleep", and "loader_threshold"
3803 options of the "proxy/fastcgi/scgi/uwsgi_cache_path" directives.
3804
3805 *) Feature: loading time decrease of configuration with large number of
3806 HTTPS sites.
3807
3808 *) Feature: now nginx supports ECDHE key exchange ciphers.
3809 Thanks to Adrian Kotelba.
3810
3811 *) Feature: the "lingering_close" directive.
3812 Thanks to Maxim Dounin.
3813
3814 *) Bugfix: in closing connection for pipelined requests.
3815 Thanks to Maxim Dounin.
3816
3817 *) Bugfix: nginx did not disable gzipping if client sent "gzip;q=0" in
3818 "Accept-Encoding" request header line.
3819
3820 *) Bugfix: in timeout in unbuffered proxied mode.
3821 Thanks to Maxim Dounin.
3822
3823 *) Bugfix: memory leaks when a "proxy_pass" directive contains variables
3824 and proxies to an HTTPS backend.
3825 Thanks to Maxim Dounin.
3826
3827 *) Bugfix: in parameter validation of a "proxy_pass" directive with
3828 variables.
3829 Thanks to Lanshun Zhou.
3830
3831 *) Bugfix: SSL did not work on QNX.
3832 Thanks to Maxim Dounin.
3833
3834 *) Bugfix: SSL modules could not be built by gcc 4.6 without
3835 --with-debug option.
3836
3837
3838 Changes with nginx 1.0.5 19 Jul 2011
3839
3840 *) Change: now default SSL ciphers are "HIGH:!aNULL:!MD5".
3841 Thanks to Rob Stradling.
3842
3843 *) Feature: the "referer_hash_max_size" and "referer_hash_bucket_size"
3844 directives.
3845 Thanks to Witold Filipczyk.
3846
3847 *) Feature: $uid_reset variable.
3848
3849 *) Bugfix: a segmentation fault might occur in a worker process, if a
3850 caching was used.
3851 Thanks to Lanshun Zhou.
3852
3853 *) Bugfix: worker processes may got caught in an endless loop during
3854 reconfiguration, if a caching was used; the bug had appeared in
3855 0.8.48.
3856 Thanks to Maxim Dounin.
3857
3858 *) Bugfix: "stalled cache updating" alert.
3859 Thanks to Maxim Dounin.
3860
3861
3862 Changes with nginx 1.0.4 01 Jun 2011
3863
3864 *) Change: now regular expressions case sensitivity in the "map"
3865 directive is given by prefixes "~" or "~*".
3866
3867 *) Feature: now shared zones and caches use POSIX semaphores on Linux.
3868 Thanks to Denis F. Latypoff.
3869
3870 *) Bugfix: "stalled cache updating" alert.
3871
3872 *) Bugfix: nginx could not be built --without-http_auth_basic_module;
3873 the bug had appeared in 1.0.3.
3874
3875
3876 Changes with nginx 1.0.3 25 May 2011
3877
3878 *) Feature: the "auth_basic_user_file" directive supports "$apr1",
3879 "{PLAIN}", and "{SSHA}" password encryption methods.
3880 Thanks to Maxim Dounin.
3881
3882 *) Feature: the "geoip_org" directive and $geoip_org variable.
3883 Thanks to Alexander Uskov, Arnaud Granal, and Denis F. Latypoff.
3884
3885 *) Feature: ngx_http_geo_module and ngx_http_geoip_module support IPv4
3886 addresses mapped to IPv6 addresses.
3887
3888 *) Bugfix: a segmentation fault occurred in a worker process during
3889 testing IPv4 address mapped to IPv6 address, if access or deny rules
3890 were defined only for IPv6; the bug had appeared in 0.8.22.
3891
3892 *) Bugfix: a cached response may be broken if "proxy/fastcgi/scgi/
3893 uwsgi_cache_bypass" and "proxy/fastcgi/scgi/uwsgi_no_cache" directive
3894 values were different; the bug had appeared in 0.8.46.
3895
3896
3897 Changes with nginx 1.0.2 10 May 2011
3898
3899 *) Feature: now shared zones and caches use POSIX semaphores.
3900
3901 *) Bugfix: in the "rotate" parameter of the "image_filter" directive.
3902 Thanks to Adam Bocim.
3903
3904 *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
3905 1.0.1.
3906
3907
3908 Changes with nginx 1.0.1 03 May 2011
3909
3910 *) Change: now the "split_clients" directive uses MurmurHash2 algorithm
3911 because of better distribution.
3912 Thanks to Oleg Mamontov.
3913
3914 *) Change: now long strings starting with zero are not considered as
3915 false values.
3916 Thanks to Maxim Dounin.
3917
3918 *) Change: now nginx uses a default listen backlog value 511 on Linux.
3919
3920 *) Feature: the $upstream_... variables may be used in the SSI and perl
3921 modules.
3922
3923 *) Bugfix: now nginx limits better disk cache size.
3924 Thanks to Oleg Mamontov.
3925
3926 *) Bugfix: a segmentation fault might occur while parsing incorrect IPv4
3927 address; the bug had appeared in 0.9.3.
3928 Thanks to Maxim Dounin.
3929
3930 *) Bugfix: nginx could not be built by gcc 4.6 without --with-debug
3931 option.
3932
3933 *) Bugfix: nginx could not be built on Solaris 9 and earlier; the bug
3934 had appeared in 0.9.3.
3935 Thanks to Dagobert Michelsen.
3936
3937 *) Bugfix: $request_time variable had invalid values if subrequests were
3938 used; the bug had appeared in 0.8.47.
3939 Thanks to Igor A. Valcov.
3940
3941
3942 Changes with nginx 1.0.0 12 Apr 2011
3943
3944 *) Bugfix: a cache manager might hog CPU after reload.
3945 Thanks to Maxim Dounin.
3946
3947 *) Bugfix: an "image_filter crop" directive worked incorrectly coupled
3948 with an "image_filter rotate 180" directive.
3949
3950 *) Bugfix: a "satisfy any" directive disabled custom 401 error page.
3951
3952
3953 Changes with nginx 0.9.7 04 Apr 2011
3954
3955 *) Feature: now keepalive connections may be closed premature, if there
3956 are no free worker connections.
3957 Thanks to Maxim Dounin.
3958
3959 *) Feature: the "rotate" parameter of the "image_filter" directive.
3960 Thanks to Adam Bocim.
3961
3962 *) Bugfix: a case when a backend in "fastcgi_pass", "scgi_pass", or
3963 "uwsgi_pass" directives is given by expression and refers to a
3964 defined upstream.
3965
3966
3967 Changes with nginx 0.9.6 21 Mar 2011
3968
3969 *) Feature: the "map" directive supports regular expressions as value of
3970 the first parameter.
3971
3972 *) Feature: $time_iso8601 access_log variable.
3973 Thanks to Michael Lustfield.
3974
3975
3976 Changes with nginx 0.9.5 21 Feb 2011
3977
3978 *) Change: now nginx uses a default listen backlog value -1 on Linux.
3979 Thanks to Andrei Nigmatulin.
3980
3981 *) Feature: the "utf8" parameter of "geoip_country" and "geoip_city"
3982 directives.
3983 Thanks to Denis F. Latypoff.
3984
3985 *) Bugfix: in a default "proxy_redirect" directive if "proxy_pass"
3986 directive has no URI part.
3987 Thanks to Maxim Dounin.
3988
3989 *) Bugfix: an "error_page" directive did not work with nonstandard error
3990 codes; the bug had appeared in 0.8.53.
3991 Thanks to Maxim Dounin.
3992
3993
3994 Changes with nginx 0.9.4 21 Jan 2011
3995
3996 *) Feature: the "server_name" directive supports the $hostname variable.
3997
3998 *) Feature: 494 code for "Request Header Too Large" error.
3999
4000
4001 Changes with nginx 0.9.3 13 Dec 2010
4002
4003 *) Bugfix: if there was a single server for given IPv6 address:port
4004 pair, then captures in regular expressions in a "server_name"
4005 directive did not work.
4006
4007 *) Bugfix: nginx could not be built on Solaris; the bug had appeared in
4008 0.9.0.
4009
4010
4011 Changes with nginx 0.9.2 06 Dec 2010
4012
4013 *) Feature: the "If-Unmodified-Since" client request header line
4014 support.
4015
4016 *) Workaround: fallback to accept() syscall if accept4() was not
4017 implemented; the issue had appeared in 0.9.0.
4018
4019 *) Bugfix: nginx could not be built on Cygwin; the bug had appeared in
4020 0.9.0.
4021
4022 *) Bugfix: for OpenSSL vulnerability CVE-2010-4180.
4023 Thanks to Maxim Dounin.
4024
4025
4026 Changes with nginx 0.9.1 30 Nov 2010
4027
4028 *) Bugfix: "return CODE message" directives did not work; the bug had
4029 appeared in 0.9.0.
4030
4031
4032 Changes with nginx 0.9.0 29 Nov 2010
4033
4034 *) Feature: the "keepalive_disable" directive.
4035
4036 *) Feature: the "map" directive supports variables as value of a defined
4037 variable.
4038
4039 *) Feature: the "map" directive supports empty strings as value of the
4040 first parameter.
4041
4042 *) Feature: the "map" directive supports expressions as the first
4043 parameter.
4044
4045 *) Feature: nginx(8) manual page.
4046 Thanks to Sergey Osokin.
4047
4048 *) Feature: Linux accept4() support.
4049 Thanks to Simon Liu.
4050
4051 *) Workaround: elimination of Linux linker warning about "sys_errlist"
4052 and "sys_nerr"; the warning had appeared in 0.8.35.
4053
4054 *) Bugfix: a segmentation fault might occur in a worker process, if the
4055 "auth_basic" directive was used.
4056 Thanks to Michail Laletin.
4057
4058 *) Bugfix: compatibility with ngx_http_eval_module; the bug had appeared
4059 in 0.8.42.
4060
4061
4062 Changes with nginx 0.8.53 18 Oct 2010
4063
4064 *) Feature: now the "error_page" directive allows to change a status
4065 code in a redirect.
4066
4067 *) Feature: the "gzip_disable" directive supports special "degradation"
4068 mask.
4069
4070 *) Bugfix: a socket leak might occurred if file AIO was used.
4071 Thanks to Maxim Dounin.
4072
4073 *) Bugfix: if the first server had no "listen" directive and there was
4074 no explicit default server, then a next server with a "listen"
4075 directive became the default server; the bug had appeared in 0.8.21.
4076
4077
4078 Changes with nginx 0.8.52 28 Sep 2010
4079
4080 *) Bugfix: nginx used SSL mode for a listen socket if any listen option
4081 was set; the bug had appeared in 0.8.51.
4082
4083
4084 Changes with nginx 0.8.51 27 Sep 2010
4085
4086 *) Change: the "secure_link_expires" directive has been canceled.
4087
4088 *) Change: a logging level of resolver errors has been lowered from
4089 "alert" to "error".
4090
4091 *) Feature: now a listen socket "ssl" parameter may be set several
4092 times.
4093
4094
4095 Changes with nginx 0.8.50 02 Sep 2010
4096
4097 *) Feature: the "secure_link", "secure_link_md5", and
4098 "secure_link_expires" directives of the ngx_http_secure_link_module.
4099
4100 *) Feature: the -q switch.
4101 Thanks to Gena Makhomed.
4102
4103 *) Bugfix: worker processes may got caught in an endless loop during
4104 reconfiguration, if a caching was used; the bug had appeared in
4105 0.8.48.
4106
4107 *) Bugfix: in the "gzip_disable" directive.
4108 Thanks to Derrick Petzold.
4109
4110 *) Bugfix: nginx/Windows could not send stop, quit, reopen, and reload
4111 signals to a process run in other session.
4112
4113
4114 Changes with nginx 0.8.49 09 Aug 2010
4115
4116 *) Feature: the "image_filter_jpeg_quality" directive supports
4117 variables.
4118
4119 *) Bugfix: a segmentation fault might occur in a worker process, if the
4120 $geoip_region_name variables was used; the bug had appeared in
4121 0.8.48.
4122
4123 *) Bugfix: errors intercepted by error_page were cached only for next
4124 request; the bug had appeared in 0.8.48.
4125
4126
4127 Changes with nginx 0.8.48 03 Aug 2010
4128
4129 *) Change: now the "server_name" directive default value is an empty
4130 name "".
4131 Thanks to Gena Makhomed.
4132
4133 *) Change: now the "server_name_in_redirect" directive default value is
4134 "off".
4135
4136 *) Feature: the $geoip_dma_code, $geoip_area_code, and
4137 $geoip_region_name variables.
4138 Thanks to Christine McGonagle.
4139
4140 *) Bugfix: the "proxy_pass", "fastcgi_pass", "uwsgi_pass", and
4141 "scgi_pass" directives were not inherited inside "limit_except"
4142 blocks.
4143
4144 *) Bugfix: the "proxy_cache_min_uses", "fastcgi_cache_min_uses"
4145 "uwsgi_cache_min_uses", and "scgi_cache_min_uses" directives did not
4146 work; the bug had appeared in 0.8.46.
4147
4148 *) Bugfix: the "fastcgi_split_path_info" directive used incorrectly
4149 captures, if only parts of an URI were captured.
4150 Thanks to Yuriy Taraday and Frank Enderle.
4151
4152 *) Bugfix: the "rewrite" directive did not escape a ";" character during
4153 copying from URI to query string.
4154 Thanks to Daisuke Murase.
4155
4156 *) Bugfix: the ngx_http_image_filter_module closed a connection, if an
4157 image was larger than "image_filter_buffer" size.
4158
4159
4160 Changes with nginx 0.8.47 28 Jul 2010
4161
4162 *) Bugfix: $request_time variable had invalid values for subrequests.
4163
4164 *) Bugfix: errors intercepted by error_page could not be cached.
4165
4166 *) Bugfix: a cache manager process may got caught in an endless loop, if
4167 max_size parameter was used; the bug had appeared in 0.8.46.
4168
4169
4170 Changes with nginx 0.8.46 19 Jul 2010
4171
4172 *) Change: now the "proxy_no_cache", "fastcgi_no_cache",
4173 "uwsgi_no_cache", and "scgi_no_cache" directives affect on a cached
4174 response saving only.
4175
4176 *) Feature: the "proxy_cache_bypass", "fastcgi_cache_bypass",
4177 "uwsgi_cache_bypass", and "scgi_cache_bypass" directives.
4178
4179 *) Bugfix: nginx did not free memory in cache keys zones if there was an
4180 error during working with backend: the memory was freed only after
4181 inactivity time or on memory low condition.
4182
4183
4184 Changes with nginx 0.8.45 13 Jul 2010
4185
4186 *) Feature: ngx_http_xslt_filter improvements.
4187 Thanks to Laurence Rowe.
4188
4189 *) Bugfix: SSI response might be truncated after include with
4190 wait="yes"; the bug had appeared in 0.7.25.
4191 Thanks to Maxim Dounin.
4192
4193 *) Bugfix: the "listen" directive did not support the "setfib=0"
4194 parameter.
4195
4196
4197 Changes with nginx 0.8.44 05 Jul 2010
4198
4199 *) Change: now nginx does not cache by default backend responses, if
4200 they have a "Set-Cookie" header line.
4201
4202 *) Feature: the "listen" directive supports the "setfib" parameter.
4203 Thanks to Andrew Filonov.
4204
4205 *) Bugfix: the "sub_filter" directive might change character case on
4206 partial match.
4207
4208 *) Bugfix: compatibility with HP/UX.
4209
4210 *) Bugfix: compatibility with AIX xlC_r compiler.
4211
4212 *) Bugfix: nginx treated large SSLv2 packets as plain requests.
4213 Thanks to Miroslaw Jaworski.
4214
4215
4216 Changes with nginx 0.8.43 30 Jun 2010
4217
4218 *) Feature: large geo ranges base loading speed-up.
4219
4220 *) Bugfix: an error_page redirection to "location /zero {return 204;}"
4221 without changing status code kept the error body; the bug had
4222 appeared in 0.8.42.
4223
4224 *) Bugfix: nginx might close IPv6 listen socket during reconfiguration.
4225 Thanks to Maxim Dounin.
4226
4227 *) Bugfix: the $uid_set variable may be used at any request processing
4228 stage.
4229
4230
4231 Changes with nginx 0.8.42 21 Jun 2010
4232
4233 *) Change: now nginx tests locations given by regular expressions, if
4234 request was matched exactly by a location given by a prefix string.
4235 The previous behavior has been introduced in 0.7.1.
4236
4237 *) Feature: the ngx_http_scgi_module.
4238 Thanks to Manlio Perillo.
4239
4240 *) Feature: a text answer may be added to a "return" directive.
4241
4242
4243 Changes with nginx 0.8.41 15 Jun 2010
4244
4245 *) Security: nginx/Windows worker might be terminated abnormally if a
4246 requested file name has invalid UTF-8 encoding.
4247
4248 *) Change: now nginx allows to use spaces in a request line.
4249
4250 *) Bugfix: the "proxy_redirect" directive changed incorrectly a backend
4251 "Refresh" response header line.
4252 Thanks to Andrey Andreew and Max Sogin.
4253
4254 *) Bugfix: nginx did not support path without host name in "Destination"
4255 request header line.
4256
4257
4258 Changes with nginx 0.8.40 07 Jun 2010
4259
4260 *) Security: now nginx/Windows ignores default file stream name.
4261 Thanks to Jose Antonio Vazquez Gonzalez.
4262
4263 *) Feature: the ngx_http_uwsgi_module.
4264 Thanks to Roberto De Ioris.
4265
4266 *) Feature: a "fastcgi_param" directive with value starting with "HTTP_"
4267 overrides a client request header line.
4268
4269 *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
4270 header lines were passed to FastCGI-server while caching.
4271
4272 *) Bugfix: listen unix domain socket could not be changed during
4273 reconfiguration.
4274 Thanks to Maxim Dounin.
4275
4276
4277 Changes with nginx 0.8.39 31 May 2010
4278
4279 *) Bugfix: an inherited "alias" directive worked incorrectly in
4280 inclusive location.
4281
4282 *) Bugfix: in "alias" with variables and "try_files" directives
4283 combination.
4284
4285 *) Bugfix: listen unix domain and IPv6 sockets did not inherit while
4286 online upgrade.
4287 Thanks to Maxim Dounin.
4288
4289
4290 Changes with nginx 0.8.38 24 May 2010
4291
4292 *) Feature: the "proxy_no_cache" and "fastcgi_no_cache" directives.
4293
4294 *) Feature: now the "rewrite" directive does a redirect automatically if
4295 the $scheme variable is used.
4296 Thanks to Piotr Sikora.
4297
4298 *) Bugfix: now "limit_req" delay directive conforms to the described
4299 algorithm.
4300 Thanks to Maxim Dounin.
4301
4302 *) Bugfix: the $uid_got variable might not be used in the SSI and perl
4303 modules.
4304
4305
4306 Changes with nginx 0.8.37 17 May 2010
4307
4308 *) Feature: the ngx_http_split_clients_module.
4309
4310 *) Feature: the "map" directive supports keys more than 255 characters.
4311
4312 *) Bugfix: nginx ignored the "private" and "no-store" values in the
4313 "Cache-Control" backend response header line.
4314
4315 *) Bugfix: a "stub" parameter of an "include" SSI directive was not
4316 used, if empty response has 200 status code.
4317
4318 *) Bugfix: if a proxied or FastCGI request was internally redirected to
4319 another proxied or FastCGI location, then a segmentation fault might
4320 occur in a worker process; the bug had appeared in 0.8.33.
4321 Thanks to Yichun Zhang.
4322
4323 *) Bugfix: IMAP connections may hang until they timed out while talking
4324 to Zimbra server.
4325 Thanks to Alan Batie.
4326
4327
4328 Changes with nginx 0.8.36 22 Apr 2010
4329
4330 *) Bugfix: the ngx_http_dav_module handled incorrectly the DELETE, COPY,
4331 and MOVE methods for symlinks.
4332
4333 *) Bugfix: values of the $query_string, $arg_..., etc. variables cached
4334 in main request were used by the SSI module in subrequests.
4335
4336 *) Bugfix: a variable value was repeatedly encoded after each an "echo"
4337 SSI-command output; the bug had appeared in 0.6.14.
4338
4339 *) Bugfix: a worker process hung if a FIFO file was requested.
4340 Thanks to Vicente Aguilar and Maxim Dounin.
4341
4342 *) Bugfix: OpenSSL-1.0.0 compatibility on 64-bit Linux.
4343 Thanks to Maxim Dounin.
4344
4345 *) Bugfix: nginx could not be built --without-http-cache; the bug had
4346 appeared in 0.8.35.
4347
4348
4349 Changes with nginx 0.8.35 01 Apr 2010
4350
4351 *) Change: now the charset filter runs before the SSI filter.
4352
4353 *) Feature: the "chunked_transfer_encoding" directive.
4354
4355 *) Bugfix: an "&" character was not escaped when it was copied in
4356 arguments part in a rewrite rule.
4357
4358 *) Bugfix: nginx might be terminated abnormally while a signal
4359 processing or if the directive "timer_resolution" was used on
4360 platforms which do not support kqueue or eventport notification
4361 methods.
4362 Thanks to George Xie and Maxim Dounin.
4363
4364 *) Bugfix: if temporary files and permanent storage area resided at
4365 different file systems, then permanent file modification times were
4366 incorrect.
4367 Thanks to Maxim Dounin.
4368
4369 *) Bugfix: ngx_http_memcached_module might issue the error message
4370 "memcached sent invalid trailer".
4371 Thanks to Maxim Dounin.
4372
4373 *) Bugfix: nginx could not built zlib-1.2.4 library using the library
4374 sources.
4375 Thanks to Maxim Dounin.
4376
4377 *) Bugfix: a segmentation fault occurred in a worker process, if there
4378 was large stderr output before FastCGI response; the bug had appeared
4379 in 0.8.34.
4380 Thanks to Maxim Dounin.
4381
4382
4383 Changes with nginx 0.8.34 03 Mar 2010
4384
4385 *) Bugfix: nginx did not support all ciphers and digests used in client
4386 certificates.
4387 Thanks to Innocenty Enikeew.
4388
4389 *) Bugfix: nginx cached incorrectly FastCGI responses if there was large
4390 stderr output before response.
4391
4392 *) Bugfix: nginx did not support HTTPS referrers.
4393
4394 *) Bugfix: nginx/Windows might not find file if path in configuration
4395 was given in other character case; the bug had appeared in 0.8.33.
4396
4397 *) Bugfix: the $date_local variable has an incorrect value, if the "%s"
4398 format was used.
4399 Thanks to Maxim Dounin.
4400
4401 *) Bugfix: if ssl_session_cache was not set or was set to "none", then
4402 during client certificate verify the error "session id context
4403 uninitialized" might occur; the bug had appeared in 0.7.1.
4404
4405 *) Bugfix: a geo range returned default value if the range included two
4406 or more /16 networks and did not begin at /16 network boundary.
4407
4408 *) Bugfix: a block used in a "stub" parameter of an "include" SSI
4409 directive was output with "text/plain" MIME type.
4410
4411 *) Bugfix: $r->sleep() did not work; the bug had appeared in 0.8.11.
4412
4413
4414 Changes with nginx 0.8.33 01 Feb 2010
4415
4416 *) Security: now nginx/Windows ignores trailing spaces in URI.
4417 Thanks to Dan Crowley, Core Security Technologies.
4418
4419 *) Security: now nginx/Windows ignores short files names.
4420 Thanks to Dan Crowley, Core Security Technologies.
4421
4422 *) Change: now keepalive connections after POST requests are not
4423 disabled for MSIE 7.0+.
4424 Thanks to Adam Lounds.
4425
4426 *) Workaround: now keepalive connections are disabled for Safari.
4427 Thanks to Joshua Sierles.
4428
4429 *) Bugfix: if a proxied or FastCGI request was internally redirected to
4430 another proxied or FastCGI location, then $upstream_response_time
4431 variable may have abnormally large value; the bug had appeared in
4432 0.8.7.
4433
4434 *) Bugfix: a segmentation fault might occur in a worker process, while
4435 discarding a request body; the bug had appeared in 0.8.11.
4436
4437
4438 Changes with nginx 0.8.32 11 Jan 2010
4439
4440 *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module.
4441 Thanks to Maxim Dounin.
4442
4443 *) Bugfix: regular expression named captures worked for two names only.
4444 Thanks to Maxim Dounin.
4445
4446 *) Bugfix: now the "localhost" name is used in the "Host" request header
4447 line, if an unix domain socket is defined in the "auth_http"
4448 directive.
4449 Thanks to Maxim Dounin.
4450
4451 *) Bugfix: nginx did not support chunked transfer encoding for 201
4452 responses.
4453 Thanks to Julian Reich.
4454
4455 *) Bugfix: if the "expires modified" set date in the past, then a
4456 negative number was set in the "Cache-Control" response header line.
4457 Thanks to Alex Kapranoff.
4458
4459
4460 Changes with nginx 0.8.31 23 Dec 2009
4461
4462 *) Feature: now the "error_page" directive may redirect the 301 and 302
4463 responses.
4464
4465 *) Feature: the $geoip_city_continent_code, $geoip_latitude, and
4466 $geoip_longitude variables.
4467 Thanks to Arvind Sundararajan.
4468
4469 *) Feature: now the ngx_http_image_filter_module deletes always EXIF and
4470 other application specific data if the data consume more than 5% of a
4471 JPEG file.
4472
4473 *) Bugfix: nginx closed a connection if a cached response had an empty
4474 body.
4475 Thanks to Piotr Sikora.
4476
4477 *) Bugfix: nginx might not be built by gcc 4.x if the -O2 or higher
4478 optimization option was used.
4479 Thanks to Maxim Dounin and Denis F. Latypoff.
4480
4481 *) Bugfix: regular expressions in location were always tested in
4482 case-sensitive mode; the bug had appeared in 0.8.25.
4483
4484 *) Bugfix: nginx cached a 304 response if there was the "If-None-Match"
4485 header line in a proxied request.
4486 Thanks to Tim Dettrick and David Kostal.
4487
4488 *) Bugfix: nginx/Windows tried to delete a temporary file twice if the
4489 file should replace an already existent file.
4490
4491
4492 Changes with nginx 0.8.30 15 Dec 2009
4493
4494 *) Change: now the default buffer size of the
4495 "large_client_header_buffers" directive is 8K.
4496 Thanks to Andrew Cholakian.
4497
4498 *) Feature: the conf/fastcgi.conf for simple FastCGI configurations.
4499
4500 *) Bugfix: nginx/Windows tried to rename a temporary file twice if the
4501 file should replace an already existent file.
4502
4503 *) Bugfix: of "double free or corruption" error issued if host could not
4504 be resolved; the bug had appeared in 0.8.22.
4505 Thanks to Konstantin Svist.
4506
4507 *) Bugfix: in libatomic usage on some platforms.
4508 Thanks to W-Mark Kubacki.
4509
4510
4511 Changes with nginx 0.8.29 30 Nov 2009
4512
4513 *) Change: now the "009" status code is written to an access log for
4514 proxied HTTP/0.9 responses.
4515
4516 *) Feature: the "addition_types", "charset_types", "gzip_types",
4517 "ssi_types", "sub_filter_types", and "xslt_types" directives support
4518 an "*" parameter.
4519
4520 *) Feature: GCC 4.1+ built-in atomic operations usage.
4521 Thanks to W-Mark Kubacki.
4522
4523 *) Feature: the --with-libatomic[=DIR] option in the configure.
4524 Thanks to W-Mark Kubacki.
4525
4526 *) Bugfix: listen unix domain socket had limited access rights.
4527
4528 *) Bugfix: cached HTTP/0.9 responses were handled incorrectly.
4529
4530 *) Bugfix: regular expression named captures given by "?P<...>" did not
4531 work in a "server_name" directive.
4532 Thanks to Maxim Dounin.
4533
4534
4535 Changes with nginx 0.8.28 23 Nov 2009
4536
4537 *) Bugfix: nginx could not be built with the --without-pcre parameter;
4538 the bug had appeared in 0.8.25.
4539
4540
4541 Changes with nginx 0.8.27 17 Nov 2009
4542
4543 *) Bugfix: regular expressions did not work in nginx/Windows; the bug
4544 had appeared in 0.8.25.
4545
4546
4547 Changes with nginx 0.8.26 16 Nov 2009
4548
4549 *) Bugfix: in captures usage in "rewrite" directive; the bug had
4550 appeared in 0.8.25.
4551
4552 *) Bugfix: nginx could not be built without the --with-debug option; the
4553 bug had appeared in 0.8.25.
4554
4555
4556 Changes with nginx 0.8.25 16 Nov 2009
4557
4558 *) Change: now no message is written in an error log if a variable is
4559 not found by $r->variable() method.
4560
4561 *) Feature: the ngx_http_degradation_module.
4562
4563 *) Feature: regular expression named captures.
4564
4565 *) Feature: now URI part is not required a "proxy_pass" directive if
4566 variables are used.
4567
4568 *) Feature: now the "msie_padding" directive works for Chrome too.
4569
4570 *) Bugfix: a segmentation fault occurred in a worker process on low
4571 memory condition; the bug had appeared in 0.8.18.
4572
4573 *) Bugfix: nginx sent gzipped responses to clients those do not support
4574 gzip, if "gzip_static on" and "gzip_vary off"; the bug had appeared
4575 in 0.8.16.
4576
4577
4578 Changes with nginx 0.8.24 11 Nov 2009
4579
4580 *) Bugfix: nginx always added "Content-Encoding: gzip" response header
4581 line in 304 responses sent by ngx_http_gzip_static_module.
4582
4583 *) Bugfix: nginx could not be built without the --with-debug option; the
4584 bug had appeared in 0.8.23.
4585
4586 *) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive
4587 inherited incorrectly from previous level.
4588
4589 *) Bugfix: in resolving empty name.
4590
4591
4592 Changes with nginx 0.8.23 11 Nov 2009
4593
4594 *) Security: now SSL/TLS renegotiation is disabled.
4595 Thanks to Maxim Dounin.
4596
4597 *) Bugfix: listen unix domain socket did not inherit while online
4598 upgrade.
4599
4600 *) Bugfix: the "unix:" parameter of the "set_real_ip_from" directive did
4601 not without yet another directive with any IP address.
4602
4603 *) Bugfix: segmentation fault and infinite looping in resolver.
4604
4605 *) Bugfix: in resolver.
4606 Thanks to Artem Bokhan.
4607
4608
4609 Changes with nginx 0.8.22 03 Nov 2009
4610
4611 *) Feature: the "proxy_bind", "fastcgi_bind", and "memcached_bind"
4612 directives.
4613
4614 *) Feature: the "access" and the "deny" directives support IPv6.
4615
4616 *) Feature: the "set_real_ip_from" directive supports IPv6 addresses in
4617 request headers.
4618
4619 *) Feature: the "unix:" parameter of the "set_real_ip_from" directive.
4620
4621 *) Bugfix: nginx did not delete unix domain socket after configuration
4622 testing.
4623
4624 *) Bugfix: nginx deleted unix domain socket while online upgrade.
4625
4626 *) Bugfix: the "!-x" operator did not work.
4627 Thanks to Maxim Dounin.
4628
4629 *) Bugfix: a segmentation fault might occur in a worker process, if
4630 limit_rate was used in HTTPS server.
4631 Thanks to Maxim Dounin.
4632
4633 *) Bugfix: a segmentation fault might occur in a worker process while
4634 $limit_rate logging.
4635 Thanks to Maxim Dounin.
4636
4637 *) Bugfix: a segmentation fault might occur in a worker process, if
4638 there was no "listen" directive in "server" block; the bug had
4639 appeared in 0.8.21.
4640
4641
4642 Changes with nginx 0.8.21 26 Oct 2009
4643
4644 *) Feature: now the "-V" switch shows TLS SNI support.
4645
4646 *) Feature: the "listen" directive of the HTTP module supports unix
4647 domain sockets.
4648 Thanks to Hongli Lai.
4649
4650 *) Feature: the "default_server" parameter of the "listen" directive.
4651
4652 *) Feature: now a "default" parameter is not required to set listen
4653 socket options.
4654
4655 *) Bugfix: nginx did not support dates in 2038 year on 32-bit platforms;
4656
4657 *) Bugfix: socket leak; the bug had appeared in 0.8.11.
4658
4659
4660 Changes with nginx 0.8.20 14 Oct 2009
4661
4662 *) Change: now default SSL ciphers are "HIGH:!ADH:!MD5".
4663
4664 *) Bugfix: the ngx_http_autoindex_module did not show the trailing slash
4665 in links to a directory; the bug had appeared in 0.7.15.
4666
4667 *) Bugfix: nginx did not close a log file set by the --error-log-path
4668 configuration option; the bug had appeared in 0.7.53.
4669
4670 *) Bugfix: nginx did not treat a comma as separator in the
4671 "Cache-Control" backend response header line.
4672
4673 *) Bugfix: nginx/Windows might not create temporary file, a cache file,
4674 or "proxy/fastcgi_store"d file if a worker had no enough access
4675 rights for top level directories.
4676
4677 *) Bugfix: the "Set-Cookie" and "P3P" FastCGI response header lines were
4678 not hidden while caching if no "fastcgi_hide_header" directives were
4679 used with any parameters.
4680
4681 *) Bugfix: nginx counted incorrectly disk cache size.
4682
4683
4684 Changes with nginx 0.8.19 06 Oct 2009
4685
4686 *) Change: now SSLv2 protocol is disabled by default.
4687
4688 *) Change: now default SSL ciphers are "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM".
4689
4690 *) Bugfix: a "limit_req" directive did not work; the bug had appeared in
4691 0.8.18.
4692
4693
4694 Changes with nginx 0.8.18 06 Oct 2009
4695
4696 *) Feature: the "read_ahead" directive.
4697
4698 *) Feature: now several "perl_modules" directives may be used.
4699
4700 *) Feature: the "limit_req_log_level" and "limit_conn_log_level"
4701 directives.
4702
4703 *) Bugfix: now "limit_req" directive conforms to the leaky bucket
4704 algorithm.
4705 Thanks to Maxim Dounin.
4706
4707 *) Bugfix: nginx did not work on Linux/sparc.
4708 Thanks to Marcus Ramberg.
4709
4710 *) Bugfix: nginx sent '\0' in a "Location" response header line on MKCOL
4711 request.
4712 Thanks to Xie Zhenye.
4713
4714 *) Bugfix: zero status code was logged instead of 499 status code; the
4715 bug had appeared in 0.8.11.
4716
4717 *) Bugfix: socket leak; the bug had appeared in 0.8.11.
4718
4719
4720 Changes with nginx 0.8.17 28 Sep 2009
4721
4722 *) Security: now "/../" are disabled in "Destination" request header
4723 line.
4724
4725 *) Change: now $host variable value is always low case.
4726
4727 *) Feature: the $ssl_session_id variable.
4728
4729 *) Bugfix: socket leak; the bug had appeared in 0.8.11.
4730
4731
4732 Changes with nginx 0.8.16 22 Sep 2009
4733
4734 *) Feature: the "image_filter_transparency" directive.
4735
4736 *) Bugfix: "addition_types" directive was incorrectly named
4737 "addtion_types".
4738
4739 *) Bugfix: resolver cache poisoning.
4740 Thanks to Matthew Dempsky.
4741
4742 *) Bugfix: memory leak in resolver.
4743 Thanks to Matthew Dempsky.
4744
4745 *) Bugfix: invalid request line in $request variable was written in
4746 access_log only if error_log was set to "info" or "debug" level.
4747
4748 *) Bugfix: in PNG alpha-channel support in the
4749 ngx_http_image_filter_module.
4750
4751 *) Bugfix: nginx always added "Vary: Accept-Encoding" response header
4752 line, if both "gzip_static" and "gzip_vary" were on.
4753
4754 *) Bugfix: in UTF-8 encoding support by "try_files" directive in
4755 nginx/Windows.
4756
4757 *) Bugfix: in "post_action" directive usage; the bug had appeared in
4758 0.8.11.
4759 Thanks to Igor Artemiev.
4760
4761
4762 Changes with nginx 0.8.15 14 Sep 2009
4763
4764 *) Security: a segmentation fault might occur in worker process while
4765 specially crafted request handling.
4766 Thanks to Chris Ries.
4767
4768 *) Bugfix: if names .domain.tld, .sub.domain.tld, and .domain-some.tld
4769 were defined, then the name .sub.domain.tld was matched by
4770 .domain.tld.
4771
4772 *) Bugfix: in transparency support in the ngx_http_image_filter_module.
4773
4774 *) Bugfix: in file AIO.
4775
4776 *) Bugfix: in X-Accel-Redirect usage; the bug had appeared in 0.8.11.
4777
4778 *) Bugfix: in embedded perl module; the bug had appeared in 0.8.11.
4779
4780
4781 Changes with nginx 0.8.14 07 Sep 2009
4782
4783 *) Bugfix: an expired cached response might stick in the "UPDATING"
4784 state.
4785
4786 *) Bugfix: a segmentation fault might occur in worker process, if
4787 error_log was set to info or debug level.
4788 Thanks to Sergey Bochenkov.
4789
4790 *) Bugfix: in embedded perl module; the bug had appeared in 0.8.11.
4791
4792 *) Bugfix: an "error_page" directive did not redirect a 413 error; the
4793 bug had appeared in 0.6.10.
4794
4795
4796 Changes with nginx 0.8.13 31 Aug 2009
4797
4798 *) Bugfix: in the "aio sendfile" directive; the bug had appeared in
4799 0.8.12.
4800
4801 *) Bugfix: nginx could not be built without the --with-file-aio option
4802 on FreeBSD; the bug had appeared in 0.8.12.
4803
4804
4805 Changes with nginx 0.8.12 31 Aug 2009
4806
4807 *) Feature: the "sendfile" parameter in the "aio" directive on FreeBSD.
4808
4809 *) Bugfix: in try_files; the bug had appeared in 0.8.11.
4810
4811 *) Bugfix: in memcached; the bug had appeared in 0.8.11.
4812
4813
4814 Changes with nginx 0.8.11 28 Aug 2009
4815
4816 *) Change: now directive "gzip_disable msie6" does not disable gzipping
4817 for MSIE 6.0 SV1.
4818
4819 *) Feature: file AIO support on FreeBSD and Linux.
4820
4821 *) Feature: the "directio_alignment" directive.
4822
4823
4824 Changes with nginx 0.8.10 24 Aug 2009
4825
4826 *) Bugfix: memory leaks if GeoIP City database was used.
4827
4828 *) Bugfix: in copying temporary files to permanent storage area; the bug
4829 had appeared in 0.8.9.
4830
4831
4832 Changes with nginx 0.8.9 17 Aug 2009
4833
4834 *) Feature: now the start cache loader runs in a separate process; this
4835 should improve large caches handling.
4836
4837 *) Feature: now temporary files and permanent storage area may reside at
4838 different file systems.
4839
4840
4841 Changes with nginx 0.8.8 10 Aug 2009
4842
4843 *) Bugfix: in handling FastCGI headers split in records.
4844
4845 *) Bugfix: a segmentation fault occurred in worker process, if a request
4846 was handled in two proxied or FastCGIed locations and a caching was
4847 enabled in the first location; the bug had appeared in 0.8.7.
4848
4849
4850 Changes with nginx 0.8.7 27 Jul 2009
4851
4852 *) Change: minimum supported OpenSSL version is 0.9.7.
4853
4854 *) Change: the "ask" parameter of the "ssl_verify_client" directive was
4855 changed to the "optional" parameter and now it checks a client
4856 certificate if it was offered.
4857 Thanks to Brice Figureau.
4858
4859 *) Feature: the $ssl_client_verify variable.
4860 Thanks to Brice Figureau.
4861
4862 *) Feature: the "ssl_crl" directive.
4863 Thanks to Brice Figureau.
4864
4865 *) Feature: the "proxy" parameter of the "geo" directive.
4866
4867 *) Feature: the "image_filter" directive supports variables for setting
4868 size.
4869
4870 *) Bugfix: the $ssl_client_cert variable usage corrupted memory; the bug
4871 had appeared in 0.7.7.
4872 Thanks to Sergey Zhuravlev.
4873
4874 *) Bugfix: "proxy_pass_header" and "fastcgi_pass_header" directives did
4875 not pass to a client the "X-Accel-Redirect", "X-Accel-Limit-Rate",
4876 "X-Accel-Buffering", and "X-Accel-Charset" lines from backend
4877 response header.
4878 Thanks to Maxim Dounin.
4879
4880 *) Bugfix: in handling "Last-Modified" and "Accept-Ranges" backend
4881 response header lines; the bug had appeared in 0.7.44.
4882 Thanks to Maxim Dounin.
4883
4884 *) Bugfix: the "[alert] zero size buf" error if subrequest returns an
4885 empty response; the bug had appeared in 0.8.5.
4886
4887
4888 Changes with nginx 0.8.6 20 Jul 2009
4889
4890 *) Feature: the ngx_http_geoip_module.
4891
4892 *) Bugfix: XSLT filter may fail with message "not well formed XML
4893 document" for valid XML document.
4894 Thanks to Kuramoto Eiji.
4895
4896 *) Bugfix: now in MacOSX, Cygwin, and nginx/Windows locations given by a
4897 regular expression are always tested in case insensitive mode.
4898
4899 *) Bugfix: now nginx/Windows ignores trailing dots in URI.
4900 Thanks to Hugo Leisink.
4901
4902 *) Bugfix: name of file specified in --conf-path was not honored during
4903 installation; the bug had appeared in 0.6.6.
4904 Thanks to Maxim Dounin.
4905
4906
4907 Changes with nginx 0.8.5 13 Jul 2009
4908
4909 *) Bugfix: now nginx allows underscores in a request method.
4910
4911 *) Bugfix: a 500 error code was returned for invalid login/password
4912 while HTTP Basic authentication on Windows.
4913
4914 *) Bugfix: ngx_http_perl_module responses did not work in subrequests.
4915
4916 *) Bugfix: in ngx_http_limit_req_module.
4917 Thanks to Maxim Dounin.
4918
4919
4920 Changes with nginx 0.8.4 22 Jun 2009
4921
4922 *) Bugfix: nginx could not be built --without-http-cache; the bug had
4923 appeared in 0.8.3.
4924
4925
4926 Changes with nginx 0.8.3 19 Jun 2009
4927
4928 *) Feature: the $upstream_cache_status variable.
4929
4930 *) Bugfix: nginx could not be built on MacOSX 10.6.
4931
4932 *) Bugfix: nginx could not be built --without-http-cache; the bug had
4933 appeared in 0.8.2.
4934
4935 *) Bugfix: a segmentation fault occurred in worker process, if a backend
4936 401 error was intercepted and the backend did not set the
4937 "WWW-Authenticate" response header line.
4938 Thanks to Eugene Mychlo.
4939
4940
4941 Changes with nginx 0.8.2 15 Jun 2009
4942
4943 *) Bugfix: in open_file_cache and proxy/fastcgi cache interaction on
4944 start up.
4945
4946 *) Bugfix: open_file_cache might cache open file descriptors too long;
4947 the bug had appeared in 0.7.4.
4948
4949
4950 Changes with nginx 0.8.1 08 Jun 2009
4951
4952 *) Feature: the "updating" parameter in "proxy_cache_use_stale" and
4953 "fastcgi_cache_use_stale" directives.
4954
4955 *) Bugfix: the "If-Modified-Since", "If-Range", etc. client request
4956 header lines were passed to backend while caching if no
4957 "proxy_set_header" directive was used with any parameters.
4958
4959 *) Bugfix: the "Set-Cookie" and "P3P" response header lines were not
4960 hidden while caching if no "proxy_hide_header/fastcgi_hide_header"
4961 directives were used with any parameters.
4962
4963 *) Bugfix: the ngx_http_image_filter_module did not support GIF87a
4964 format.
4965 Thanks to Denis Ilyinyh.
4966
4967 *) Bugfix: nginx could not be built modules on Solaris 10 and early; the
4968 bug had appeared in 0.7.56.
4969
4970
4971 Changes with nginx 0.8.0 02 Jun 2009
4972
4973 *) Feature: the "keepalive_requests" directive.
4974
4975 *) Feature: the "limit_rate_after" directive.
4976 Thanks to Ivan Debnar.
4977
4978 *) Bugfix: XLST filter did not work in subrequests.
4979
4980 *) Bugfix: in relative paths handling in nginx/Windows.
4981
4982 *) Bugfix: in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache
4983 in nginx/Windows.
4984
4985 *) Bugfix: in memory allocation error handling.
4986 Thanks to Maxim Dounin and Kirill A. Korinskiy.
4987
4988
4989 Changes with nginx 0.7.59 25 May 2009
4990
4991 *) Feature: the "proxy_cache_methods" and "fastcgi_cache_methods"
4992 directives.
4993
4994 *) Bugfix: socket leak; the bug had appeared in 0.7.25.
4995 Thanks to Maxim Dounin.
4996
4997 *) Bugfix: a segmentation fault occurred in worker process, if a request
4998 had no body and the $request_body variable was used;
4999 the bug had appeared in 0.7.58.
5000
5001 *) Bugfix: the SSL modules might not built on Solaris and Linux;
5002 the bug had appeared in 0.7.56.
5003
5004 *) Bugfix: ngx_http_xslt_filter_module responses were not handled by
5005 SSI, charset, and gzip filters.
5006
5007 *) Bugfix: a "charset" directive did not set a charset to
5008 ngx_http_gzip_static_module responses.
5009
5010
5011 Changes with nginx 0.7.58 18 May 2009
5012
5013 *) Feature: a "listen" directive of the mail proxy module supports IPv6.
5014
5015 *) Feature: the "image_filter_jpeg_quality" directive.
5016
5017 *) Feature: the "client_body_in_single_buffer" directive.
5018
5019 *) Feature: the $request_body variable.
5020
5021 *) Bugfix: in ngx_http_autoindex_module in file name links having a ":"
5022 symbol in the name.
5023
5024 *) Bugfix: "make upgrade" procedure did not work; the bug had appeared
5025 in 0.7.53.
5026 Thanks to Denis F. Latypoff.
5027
5028
5029 Changes with nginx 0.7.57 12 May 2009
5030
5031 *) Bugfix: a floating-point fault occurred in worker process, if the
5032 ngx_http_image_filter_module errors were redirected to named
5033 location; the bug had appeared in 0.7.56.
5034
5035
5036 Changes with nginx 0.7.56 11 May 2009
5037
5038 *) Feature: nginx/Windows supports IPv6 in a "listen" directive of the
5039 HTTP module.
5040
5041 *) Bugfix: in ngx_http_image_filter_module.
5042
5043
5044 Changes with nginx 0.7.55 06 May 2009
5045
5046 *) Bugfix: the http_XXX parameters in "proxy_cache_use_stale" and
5047 "fastcgi_cache_use_stale" directives did not work.
5048
5049 *) Bugfix: fastcgi cache did not cache header only responses.
5050
5051 *) Bugfix: of "select() failed (9: Bad file descriptor)" error in
5052 nginx/Unix and "select() failed (10038: ...)" error in nginx/Windows.
5053
5054 *) Bugfix: a segmentation fault might occur in worker process, if an
5055 "debug_connection" directive was used; the bug had appeared in
5056 0.7.54.
5057
5058 *) Bugfix: fix ngx_http_image_filter_module building errors.
5059
5060 *) Bugfix: the files bigger than 2G could not be transferred using
5061 $r->sendfile.
5062 Thanks to Maxim Dounin.
5063
5064
5065 Changes with nginx 0.7.54 01 May 2009
5066
5067 *) Feature: the ngx_http_image_filter_module.
5068
5069 *) Feature: the "proxy_ignore_headers" and "fastcgi_ignore_headers"
5070 directives.
5071
5072 *) Bugfix: a segmentation fault might occur in worker process, if an
5073 "open_file_cache_errors off" directive was used; the bug had appeared
5074 in 0.7.53.
5075
5076 *) Bugfix: the "port_in_redirect off" directive did not work; the bug
5077 had appeared in 0.7.39.
5078
5079 *) Bugfix: improve handling of "select" method errors.
5080
5081 *) Bugfix: of "select() failed (10022: ...)" error in nginx/Windows.
5082
5083 *) Bugfix: in error text descriptions in nginx/Windows; the bug had
5084 appeared in 0.7.53.
5085
5086
5087 Changes with nginx 0.7.53 27 Apr 2009
5088
5089 *) Change: now a log set by --error-log-path is created from the very
5090 start-up.
5091
5092 *) Feature: now the start up errors and warnings are outputted to an
5093 error_log and stderr.
5094
5095 *) Feature: the empty --prefix= configure parameter forces nginx to use
5096 a directory where it was run as prefix.
5097
5098 *) Feature: the -p switch.
5099
5100 *) Feature: the -s switch on Unix platforms.
5101
5102 *) Feature: the -? and -h switches.
5103 Thanks to Jerome Loyet.
5104
5105 *) Feature: now switches may be set in condensed form.
5106
5107 *) Bugfix: nginx/Windows did not work if configuration file was given by
5108 the -c switch.
5109
5110 *) Bugfix: temporary files might be not removed if the "proxy_store",
5111 "fastcgi_store", "proxy_cache", or "fastcgi_cache" were used.
5112 Thanks to Maxim Dounin.
5113
5114 *) Bugfix: an incorrect value was passed to mail proxy authentication
5115 server in "Auth-Method" header line; the bug had appeared
5116 in 0.7.34.
5117 Thanks to Simon Lecaille.
5118
5119 *) Bugfix: system error text descriptions were not logged on Linux;
5120 the bug had appeared in 0.7.45.
5121
5122 *) Bugfix: the "fastcgi_cache_min_uses" directive did not work.
5123 Thanks to Andrew Vorobyoff.
5124
5125
5126 Changes with nginx 0.7.52 20 Apr 2009
5127
5128 *) Feature: the first native Windows binary release.
5129
5130 *) Bugfix: in processing HEAD method while caching.
5131
5132 *) Bugfix: in processing the "If-Modified-Since", "If-Range", etc.
5133 client request header lines while caching.
5134
5135 *) Bugfix: now the "Set-Cookie" and "P3P" header lines are hidden in
5136 cacheable responses.
5137
5138 *) Bugfix: if nginx was built with the ngx_http_perl_module and with a
5139 perl which supports threads, then during a master process exit the
5140 message "panic: MUTEX_LOCK" might be issued.
5141
5142 *) Bugfix: nginx could not be built --without-http-cache; the bug had
5143 appeared in 0.7.48.
5144
5145 *) Bugfix: nginx could not be built on platforms different from i386,
5146 amd64, sparc, and ppc; the bug had appeared in 0.7.42.
5147
5148
5149 Changes with nginx 0.7.51 12 Apr 2009
5150
5151 *) Feature: the "try_files" directive supports a response code in the
5152 fallback parameter.
5153
5154 *) Feature: now any response code can be used in the "return" directive.
5155
5156 *) Bugfix: the "error_page" directive made an external redirect without
5157 query string; the bug had appeared in 0.7.44.
5158
5159 *) Bugfix: if servers listened on several defined explicitly addresses,
5160 then virtual servers might not work; the bug had appeared in 0.7.39.
5161
5162
5163 Changes with nginx 0.7.50 06 Apr 2009
5164
5165 *) Bugfix: the $arg_... variables did not work; the bug had appeared in
5166 0.7.49.
5167
5168
5169 Changes with nginx 0.7.49 06 Apr 2009
5170
5171 *) Bugfix: a segmentation fault might occur in worker process, if the
5172 $arg_... variables were used; the bug had appeared in 0.7.48.
5173
5174
5175 Changes with nginx 0.7.48 06 Apr 2009
5176
5177 *) Feature: the "proxy_cache_key" directive.
5178
5179 *) Bugfix: now nginx takes into account the "X-Accel-Expires",
5180 "Expires", and "Cache-Control" header lines in a backend response.
5181
5182 *) Bugfix: now nginx caches responses for the GET requests only.
5183
5184 *) Bugfix: the "fastcgi_cache_key" directive was not inherited.
5185
5186 *) Bugfix: the $arg_... variables did not work with SSI subrequests.
5187 Thanks to Maxim Dounin.
5188
5189 *) Bugfix: nginx could not be built with uclibc library.
5190 Thanks to Timothy Redaelli.
5191
5192 *) Bugfix: nginx could not be built on OpenBSD; the bug had
5193 appeared in 0.7.46.
5194
5195
5196 Changes with nginx 0.7.47 01 Apr 2009
5197
5198 *) Bugfix: nginx could not be built on FreeBSD 6 and early versions; the
5199 bug had appeared in 0.7.46.
5200
5201 *) Bugfix: nginx could not be built on MacOSX; the bug had
5202 appeared in 0.7.46.
5203
5204 *) Bugfix: if the "max_size" parameter was set, then the cache manager
5205 might purge a whole cache; the bug had appeared in 0.7.46.
5206
5207 *) Change: a segmentation fault might occur in worker process, if the
5208 "proxy_cache"/"fastcgi_cache" and the "proxy_cache_valid"/
5209 "fastcgi_cache_valid" were set on different levels; the bug had
5210 appeared in 0.7.46.
5211
5212 *) Bugfix: a segmentation fault might occur in worker process, if a
5213 request was redirected to a proxied or FastCGI server via error_page
5214 or try_files; the bug had appeared in 0.7.44.
5215
5216
5217 Changes with nginx 0.7.46 30 Mar 2009
5218
5219 *) Bugfix: the previous release tarball was incorrect.
5220
5221
5222 Changes with nginx 0.7.45 30 Mar 2009
5223
5224 *) Change: now the "proxy_cache" and the "proxy_cache_valid" directives
5225 can be set on different levels.
5226
5227 *) Change: the "clean_time" parameter of the "proxy_cache_path"
5228 directive is canceled.
5229
5230 *) Feature: the "max_size" parameter of the "proxy_cache_path"
5231 directive.
5232
5233 *) Feature: the ngx_http_fastcgi_module preliminary cache support.
5234
5235 *) Feature: now on shared memory allocation errors directive and zone
5236 names are logged.
5237
5238 *) Bugfix: the directive "add_header last-modified ''" did not delete a
5239 "Last-Modified" response header line; the bug had appeared in 0.7.44.
5240
5241 *) Bugfix: a relative path in the "auth_basic_user_file" directive given
5242 without variables did not work; the bug had appeared in 0.7.44.
5243 Thanks to Jerome Loyet.
5244
5245 *) Bugfix: in an "alias" directive given using variables without
5246 references to captures of regular expressions; the bug had appeared
5247 in 0.7.42.
5248
5249
5250 Changes with nginx 0.7.44 23 Mar 2009
5251
5252 *) Feature: the ngx_http_proxy_module preliminary cache support.
5253
5254 *) Feature: the --with-pcre option in the configure.
5255
5256 *) Feature: the "try_files" directive is now allowed on the server block
5257 level.
5258
5259 *) Bugfix: the "try_files" directive handled incorrectly a query string
5260 in a fallback parameter.
5261
5262 *) Bugfix: the "try_files" directive might test incorrectly directories.
5263
5264 *) Bugfix: if there was a single server for given address:port pair,
5265 then captures in regular expressions in a "server_name" directive did
5266 not work.
5267
5268
5269 Changes with nginx 0.7.43 18 Mar 2009
5270
5271 *) Bugfix: a request was handled incorrectly, if a "root" directive used
5272 variables; the bug had appeared in 0.7.42.
5273
5274 *) Bugfix: if a server listened on wildcard address, then the
5275 $server_addr variable value was "0.0.0.0"; the bug had appeared in
5276 0.7.36.
5277
5278
5279 Changes with nginx 0.7.42 16 Mar 2009
5280
5281 *) Change: now the "Invalid argument" error returned by
5282 setsockopt(TCP_NODELAY) on Solaris, is ignored.
5283
5284 *) Change: now if a file specified in a "auth_basic_user_file" directive
5285 is absent, then the 403 error is returned instead of the 500 one.
5286
5287 *) Feature: the "auth_basic_user_file" directive supports variables.
5288 Thanks to Kirill A. Korinskiy.
5289
5290 *) Feature: the "listen" directive supports the "ipv6only" parameter.
5291 Thanks to Zhang Hua.
5292
5293 *) Bugfix: in an "alias" directive with references to captures of
5294 regular expressions; the bug had appeared in 0.7.40.
5295
5296 *) Bugfix: compatibility with Tru64 UNIX.
5297 Thanks to Dustin Marquess.
5298
5299 *) Bugfix: nginx could not be built without PCRE library; the bug had
5300 appeared in 0.7.41.
5301
5302
5303 Changes with nginx 0.7.41 11 Mar 2009
5304
5305 *) Bugfix: a segmentation fault might occur in worker process, if a
5306 "server_name" or a "location" directives had captures in regular
5307 expressions; the issue had appeared in 0.7.40.
5308 Thanks to Vladimir Sopot.
5309
5310
5311 Changes with nginx 0.7.40 09 Mar 2009
5312
5313 *) Feature: the "location" directive supports captures in regular
5314 expressions.
5315
5316 *) Feature: an "alias" directive with capture references may be used
5317 inside a location given by a regular expression with captures.
5318
5319 *) Feature: the "server_name" directive supports captures in regular
5320 expressions.
5321
5322 *) Workaround: the ngx_http_autoindex_module did not show the trailing
5323 slash in directories on XFS filesystem; the issue had appeared in
5324 0.7.15.
5325 Thanks to Dmitry Kuzmenko.
5326
5327
5328 Changes with nginx 0.7.39 02 Mar 2009
5329
5330 *) Bugfix: large response with SSI might hang, if gzipping was enabled;
5331 the bug had appeared in 0.7.28.
5332 Thanks to Artem Bokhan.
5333
5334 *) Bugfix: a segmentation fault might occur in worker process, if short
5335 static variants are used in a "try_files" directive.
5336
5337
5338 Changes with nginx 0.7.38 23 Feb 2009
5339
5340 *) Feature: authentication failures logging.
5341
5342 *) Bugfix: name/password in auth_basic_user_file were ignored after odd
5343 number of empty lines.
5344 Thanks to Alexander Zagrebin.
5345
5346 *) Bugfix: a segmentation fault occurred in a master process, if long
5347 path was used in unix domain socket; the bug had appeared in 0.7.36.
5348
5349
5350 Changes with nginx 0.7.37 21 Feb 2009
5351
5352 *) Bugfix: directives using upstreams did not work; the bug had appeared
5353 in 0.7.36.
5354
5355
5356 Changes with nginx 0.7.36 21 Feb 2009
5357
5358 *) Feature: a preliminary IPv6 support; the "listen" directive of the
5359 HTTP module supports IPv6.
5360
5361 *) Bugfix: the $ancient_browser variable did not work for browsers
5362 preset by a "modern_browser" directives.
5363
5364
5365 Changes with nginx 0.7.35 16 Feb 2009
5366
5367 *) Bugfix: a "ssl_engine" directive did not use a SSL-accelerator for
5368 asymmetric ciphers.
5369 Thanks to Marcin Gozdalik.
5370
5371 *) Bugfix: a "try_files" directive set MIME type depending on an
5372 original request extension.
5373
5374 *) Bugfix: "*domain.tld" names were handled incorrectly in
5375 "server_name", "valid_referers", and "map" directives, if
5376 ".domain.tld" and ".subdomain.domain.tld" wildcards were used;
5377 the bug had appeared in 0.7.9.
5378
5379
5380 Changes with nginx 0.7.34 10 Feb 2009
5381
5382 *) Feature: the "off" parameter of the "if_modified_since" directive.
5383
5384 *) Feature: now nginx sends an HELO/EHLO command after a XCLIENT
5385 command.
5386 Thanks to Maxim Dounin.
5387
5388 *) Feature: Microsoft specific "AUTH LOGIN with User Name" mode support
5389 in mail proxy server.
5390 Thanks to Maxim Dounin.
5391
5392 *) Bugfix: in a redirect rewrite directive original arguments were
5393 concatenated with new arguments by a "?" rather than an "&";
5394 the bug had appeared in 0.1.18.
5395 Thanks to Maxim Dounin.
5396
5397 *) Bugfix: nginx could not be built on AIX.
5398
5399
5400 Changes with nginx 0.7.33 02 Feb 2009
5401
5402 *) Bugfix: a double response might be returned if the epoll or rtsig
5403 methods are used and a redirect was returned to a request with body.
5404 Thanks to Eden Li.
5405
5406 *) Bugfix: the $sent_http_location variable was empty for some redirects
5407 types.
5408
5409 *) Bugfix: a segmentation fault might occur in worker process if
5410 "resolver" directive was used in SMTP proxy.
5411
5412
5413 Changes with nginx 0.7.32 26 Jan 2009
5414
5415 *) Feature: now a directory existence testing can be set explicitly in
5416 the "try_files" directive.
5417
5418 *) Bugfix: fastcgi_store stored files not always.
5419
5420 *) Bugfix: in geo ranges.
5421
5422 *) Bugfix: in shared memory allocations if nginx was built without
5423 debugging.
5424 Thanks to Andrey Kvasov.
5425
5426
5427 Changes with nginx 0.7.31 19 Jan 2009
5428
5429 *) Change: now the "try_files" directive tests files only and ignores
5430 directories.
5431
5432 *) Feature: the "fastcgi_split_path_info" directive.
5433
5434 *) Bugfixes in an "Expect" request header line support.
5435
5436 *) Bugfixes in geo ranges.
5437
5438 *) Bugfix: in a miss case ngx_http_memcached_module returned the "END"
5439 line as response body instead of default 404 page body; the bug had
5440 appeared in 0.7.18.
5441 Thanks to Maxim Dounin.
5442
5443 *) Bugfix: while SMTP proxying nginx issued message "250 2.0.0 OK"
5444 instead of "235 2.0.0 OK"; the bug had appeared in 0.7.22.
5445 Thanks to Maxim Dounin.
5446
5447
5448 Changes with nginx 0.7.30 24 Dec 2008
5449
5450 *) Bugfix: a segmentation fault occurred in worker process, if variables
5451 were used in the "fastcgi_pass" or "proxy_pass" directives and host
5452 name must be resolved; the bug had appeared in 0.7.29.
5453
5454
5455 Changes with nginx 0.7.29 24 Dec 2008
5456
5457 *) Bugfix: the "fastcgi_pass" and "proxy_pass" directives did not
5458 support variables if unix domain sockets were used.
5459
5460 *) Bugfixes in subrequest processing; the bugs had appeared in 0.7.25.
5461
5462 *) Bugfix: a "100 Continue" response was issued for HTTP/1.0 requests;
5463 Thanks to Maxim Dounin.
5464
5465 *) Bugfix: in memory allocation in the ngx_http_gzip_filter_module on
5466 Cygwin.
5467
5468
5469 Changes with nginx 0.7.28 22 Dec 2008
5470
5471 *) Change: in memory allocation in the ngx_http_gzip_filter_module.
5472
5473 *) Change: the default "gzip_buffers" directive values have been changed
5474 to 32 4k or 16 8k from 4 4k/8k.
5475
5476
5477 Changes with nginx 0.7.27 15 Dec 2008
5478
5479 *) Feature: the "try_files" directive.
5480
5481 *) Feature: variables support in the "fastcgi_pass" directive.
5482
5483 *) Feature: now the $geo variable may get an address from a variable.
5484 Thanks to Andrei Nigmatulin.
5485
5486 *) Feature: now a location's modifier may be used without space before
5487 name.
5488
5489 *) Feature: the $upstream_response_length variable.
5490
5491 *) Bugfix: now a "add_header" directive does not add an empty value.
5492
5493 *) Bugfix: if zero length static file was requested, then nginx just
5494 closed connection; the bug had appeared in 0.7.25.
5495
5496 *) Bugfix: a MOVE method could not move file in non-existent directory.
5497
5498 *) Bugfix: a segmentation fault occurred in worker process, if no one
5499 named location was defined in server, but some one was used in an
5500 error_page directive.
5501 Thanks to Sergey Bochenkov.
5502
5503
5504 Changes with nginx 0.7.26 08 Dec 2008
5505
5506 *) Bugfix: in subrequest processing; the bug had appeared in 0.7.25.
5507
5508
5509 Changes with nginx 0.7.25 08 Dec 2008
5510
5511 *) Change: in subrequest processing.
5512
5513 *) Change: now POSTs without "Content-Length" header line are allowed.
5514
5515 *) Bugfix: now the "limit_req" and "limit_conn" directives log a
5516 prohibition reason.
5517
5518 *) Bugfix: in the "delete" parameter of the "geo" directive.
5519
5520
5521 Changes with nginx 0.7.24 01 Dec 2008
5522
5523 *) Feature: the "if_modified_since" directive.
5524
5525 *) Bugfix: nginx did not process a FastCGI server response, if the
5526 server send too many messages to stderr before response.
5527
5528 *) Bugfix: the "$cookie_..." variables did not work in the SSI and the
5529 perl module.
5530
5531
5532 Changes with nginx 0.7.23 27 Nov 2008
5533
5534 *) Feature: the "delete" and "ranges" parameters in the "geo" directive.
5535
5536 *) Feature: speeding up loading of geo base with large number of values.
5537
5538 *) Feature: decrease of memory required for geo base load.
5539
5540
5541 Changes with nginx 0.7.22 20 Nov 2008
5542
5543 *) Feature: the "none" parameter in the "smtp_auth" directive.
5544 Thanks to Maxim Dounin.
5545
5546 *) Feature: the "$cookie_..." variables.
5547
5548 *) Bugfix: the "directio" directive did not work in XFS filesystem.
5549
5550 *) Bugfix: the resolver did not understand big DNS responses.
5551 Thanks to Zyb.
5552
5553
5554 Changes with nginx 0.7.21 11 Nov 2008
5555
5556 *) Changes in the ngx_http_limit_req_module.
5557
5558 *) Feature: the EXSLT support in the ngx_http_xslt_module.
5559 Thanks to Denis F. Latypoff.
5560
5561 *) Workaround: compatibility with glibc 2.3.
5562 Thanks to Eric Benson and Maxim Dounin.
5563
5564 *) Bugfix: nginx could not run on MacOSX 10.4 and earlier; the bug had
5565 appeared in 0.7.6.
5566
5567
5568 Changes with nginx 0.7.20 10 Nov 2008
5569
5570 *) Changes in the ngx_http_gzip_filter_module.
5571
5572 *) Feature: the ngx_http_limit_req_module.
5573
5574 *) Bugfix: worker processes might exit on a SIGBUS signal on sparc and
5575 ppc platforms; the bug had appeared in 0.7.3.
5576 Thanks to Maxim Dounin.
5577
5578 *) Bugfix: the "proxy_pass http://host/some:uri" directives did not
5579 work; the bug had appeared in 0.7.12.
5580
5581 *) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
5582 error.
5583
5584 *) Bugfix: the ngx_http_secure_link_module did not work inside
5585 locations, whose names are less than 3 characters.
5586
5587 *) Bugfix: $server_addr variable might have no value.
5588
5589
5590 Changes with nginx 0.7.19 13 Oct 2008
5591
5592 *) Bugfix: version number update.
5593
5594
5595 Changes with nginx 0.7.18 13 Oct 2008
5596
5597 *) Change: the "underscores_in_headers" directive; now nginx does not
5598 allows underscores in a client request header line names.
5599
5600 *) Feature: the ngx_http_secure_link_module.
5601
5602 *) Feature: the "real_ip_header" directive supports any header.
5603
5604 *) Feature: the "log_subrequest" directive.
5605
5606 *) Feature: the $realpath_root variable.
5607
5608 *) Feature: the "http_502" and "http_504" parameters of the
5609 "proxy_next_upstream" directive.
5610
5611 *) Bugfix: the "http_503" parameter of the "proxy_next_upstream" or
5612 "fastcgi_next_upstream" directives did not work.
5613
5614 *) Bugfix: nginx might send a "Transfer-Encoding: chunked" header line
5615 for HEAD requests.
5616
5617 *) Bugfix: now accept threshold depends on worker_connections.
5618
5619
5620 Changes with nginx 0.7.17 15 Sep 2008
5621
5622 *) Feature: now the "directio" directive works on Linux.
5623
5624 *) Feature: the $pid variable.
5625
5626 *) Bugfix: the "directio" optimization that had appeared in 0.7.15 did
5627 not work with open_file_cache.
5628
5629 *) Bugfix: the "access_log" with variables did not work on Linux; the
5630 bug had appeared in 0.7.7.
5631
5632 *) Bugfix: the ngx_http_charset_module did not understand quoted charset
5633 name received from backend.
5634
5635
5636 Changes with nginx 0.7.16 08 Sep 2008
5637
5638 *) Bugfix: nginx could not be built on 64-bit platforms; the bug had
5639 appeared in 0.7.15.
5640
5641
5642 Changes with nginx 0.7.15 08 Sep 2008
5643
5644 *) Feature: the ngx_http_random_index_module.
5645
5646 *) Feature: the "directio" directive has been optimized for file
5647 requests starting from arbitrary position.
5648
5649 *) Feature: the "directio" directive turns off sendfile if it is
5650 necessary.
5651
5652 *) Feature: now nginx allows underscores in a client request header line
5653 names.
5654
5655
5656 Changes with nginx 0.7.14 01 Sep 2008
5657
5658 *) Change: now the ssl_certificate and ssl_certificate_key directives
5659 have no default values.
5660
5661 *) Feature: the "listen" directive supports the "ssl" parameter.
5662
5663 *) Feature: now nginx takes into account a time zone change while
5664 reconfiguration on FreeBSD and Linux.
5665
5666 *) Bugfix: the "listen" directive parameters such as "backlog",
5667 "rcvbuf", etc. were not set, if a default server was not the first
5668 one.
5669
5670 *) Bugfix: if URI part captured by a "rewrite" directive was used as a
5671 query string, then the query string was not escaped.
5672
5673 *) Bugfix: configuration file validity test improvements.
5674
5675
5676 Changes with nginx 0.7.13 26 Aug 2008
5677
5678 *) Bugfix: nginx could not be built on Linux and Solaris; the bug had
5679 appeared in 0.7.12.
5680
5681
5682 Changes with nginx 0.7.12 26 Aug 2008
5683
5684 *) Feature: the "server_name" directive supports empty name "".
5685
5686 *) Feature: the "gzip_disable" directive supports special "msie6" mask.
5687
5688 *) Bugfix: if the "max_fails=0" parameter was used in upstream with
5689 several servers, then a worker process exited on a SIGFPE signal.
5690 Thanks to Maxim Dounin.
5691
5692 *) Bugfix: a request body was dropped while redirection via an
5693 "error_page" directive.
5694
5695 *) Bugfix: a full response was returned for request method HEAD while
5696 redirection via an "error_page" directive.
5697
5698 *) Bugfix: the $r->header_in() method did not return value of the
5699 "Host", "User-Agent", and "Connection" request header lines; the bug
5700 had appeared in 0.7.0.
5701
5702
5703 Changes with nginx 0.7.11 18 Aug 2008
5704
5705 *) Change: now ngx_http_charset_module does not work by default with
5706 text/css MIME type.
5707
5708 *) Feature: now nginx returns the 405 status code for POST method
5709 requesting a static file only if the file exists.
5710
5711 *) Feature: the "proxy_ssl_session_reuse" directive.
5712
5713 *) Bugfix: a "proxy_pass" directive without URI part might use original
5714 request after the "X-Accel-Redirect" redirection was used.
5715
5716 *) Bugfix: if a directory has search only rights and the first index
5717 file was absent, then nginx returned the 500 status code.
5718
5719 *) Bugfix: in inclusive locations; the bugs had appeared in 0.7.1.
5720
5721
5722 Changes with nginx 0.7.10 13 Aug 2008
5723
5724 *) Bugfix: in the "addition_types", "charset_types", "gzip_types",
5725 "ssi_types", "sub_filter_types", and "xslt_types" directives; the
5726 bugs had appeared in 0.7.9.
5727
5728 *) Bugfix: of recursive error_page for 500 status code.
5729
5730 *) Bugfix: now the ngx_http_realip_module sets address not for whole
5731 keepalive connection, but for each request passed via the connection.
5732
5733
5734 Changes with nginx 0.7.9 12 Aug 2008
5735
5736 *) Change: now ngx_http_charset_module works by default with following
5737 MIME types: text/html, text/css, text/xml, text/plain,
5738 text/vnd.wap.wml, application/x-javascript, and application/rss+xml.
5739
5740 *) Feature: the "charset_types" and "addition_types" directives.
5741
5742 *) Feature: now the "gzip_types", "ssi_types", and "sub_filter_types"
5743 directives use hash.
5744
5745 *) Feature: the ngx_cpp_test_module.
5746
5747 *) Feature: the "expires" directive supports daily time.
5748
5749 *) Feature: the ngx_http_xslt_module improvements and bug fixing.
5750 Thanks to Denis F. Latypoff and Maxim Dounin.
5751
5752 *) Bugfix: the "log_not_found" directive did not work for index files
5753 tests.
5754
5755 *) Bugfix: HTTPS connections might hang, if kqueue, epoll, rtsig, or
5756 eventport methods were used; the bug had appeared in 0.7.7.
5757
5758 *) Bugfix: if the "server_name", "valid_referers", and "map" directives
5759 used an "*.domain.tld" wildcard and exact name "domain.tld" was not
5760 set, then the exact name was matched by the wildcard; the bug had
5761 appeared in 0.3.18.
5762
5763
5764 Changes with nginx 0.7.8 04 Aug 2008
5765
5766 *) Feature: the ngx_http_xslt_module.
5767
5768 *) Feature: the "$arg_..." variables.
5769
5770 *) Feature: Solaris directio support.
5771 Thanks to Ivan Debnar.
5772
5773 *) Bugfix: now if FastCGI server sends a "Location" header line without
5774 status line, then nginx uses 302 status code.
5775 Thanks to Maxim Dounin.
5776
5777
5778 Changes with nginx 0.7.7 30 Jul 2008
5779
5780 *) Change: now the EAGAIN error returned by connect() is not considered
5781 as temporary error.
5782
5783 *) Change: now the $ssl_client_cert variable value is a certificate with
5784 TAB character intended before each line except first one; an
5785 unchanged certificate is available in the $ssl_client_raw_cert
5786 variable.
5787
5788 *) Feature: the "ask" parameter in the "ssl_verify_client" directive.
5789
5790 *) Feature: byte-range processing improvements.
5791 Thanks to Maxim Dounin.
5792
5793 *) Feature: the "directio" directive.
5794 Thanks to Jiang Hong.
5795
5796 *) Feature: MacOSX 10.5 sendfile() support.
5797
5798 *) Bugfix: now in MacOSX and Cygwin locations are tested in case
5799 insensitive mode; however, the compare is provided by single-byte
5800 locales only.
5801
5802 *) Bugfix: mail proxy SSL connections hanged, if select, poll, or
5803 /dev/poll methods were used.
5804
5805 *) Bugfix: UTF-8 encoding usage in the ngx_http_autoindex_module.
5806
5807
5808 Changes with nginx 0.7.6 07 Jul 2008
5809
5810 *) Bugfix: now if variables are used in the "access_log" directive a
5811 request root existence is always tested.
5812
5813 *) Bugfix: the ngx_http_flv_module did not support several values in a
5814 query string.
5815
5816
5817 Changes with nginx 0.7.5 01 Jul 2008
5818
5819 *) Bugfixes in variables support in the "access_log" directive; the bugs
5820 had appeared in 0.7.4.
5821
5822 *) Bugfix: nginx could not be built --without-http_gzip_module; the bug
5823 had appeared in 0.7.3.
5824 Thanks to Kirill A. Korinskiy.
5825
5826 *) Bugfix: if sub_filter and SSI were used together, then responses
5827 might were transferred incorrectly.
5828
5829
5830 Changes with nginx 0.7.4 30 Jun 2008
5831
5832 *) Feature: variables support in the "access_log" directive.
5833
5834 *) Feature: the "open_log_file_cache" directive.
5835
5836 *) Feature: the -g switch.
5837
5838 *) Feature: the "Expect" request header line support.
5839
5840 *) Bugfix: large SSI inclusions might be truncated.
5841
5842
5843 Changes with nginx 0.7.3 23 Jun 2008
5844
5845 *) Change: the "rss" extension MIME type has been changed to
5846 "application/rss+xml".
5847
5848 *) Change: now the "gzip_vary" directive turned on issues a
5849 "Vary: Accept-Encoding" header line for uncompressed responses too.
5850
5851 *) Feature: now the "rewrite" directive does a redirect automatically if
5852 the "https://" protocol is used.
5853
5854 *) Bugfix: the "proxy_pass" directive did not work with the HTTPS
5855 protocol; the bug had appeared in 0.6.9.
5856
5857
5858 Changes with nginx 0.7.2 16 Jun 2008
5859
5860 *) Feature: now nginx supports EDH key exchange ciphers.
5861
5862 *) Feature: the "ssl_dhparam" directive.
5863
5864 *) Feature: the $ssl_client_cert variable.
5865 Thanks to Manlio Perillo.
5866
5867 *) Bugfix: after changing URI via a "rewrite" directive nginx did not
5868 search a new location; the bug had appeared in 0.7.1.
5869 Thanks to Maxim Dounin.
5870
5871 *) Bugfix: nginx could not be built without PCRE library; the bug had
5872 appeared in 0.7.1.
5873
5874 *) Bugfix: when a request to a directory was redirected with the slash
5875 added, nginx dropped a query string from the original request.
5876
5877
5878 Changes with nginx 0.7.1 26 May 2008
5879
5880 *) Change: now locations are searched in a tree.
5881
5882 *) Change: the "optimize_server_names" directive was canceled due to the
5883 "server_name_in_redirect" directive introduction.
5884
5885 *) Change: some long deprecated directives are not supported anymore.
5886
5887 *) Change: the "none" parameter in the "ssl_session_cache" directive;
5888 now this is default parameter.
5889 Thanks to Rob Mueller.
5890
5891 *) Bugfix: worker processes might not catch reconfiguration and log
5892 rotation signals.
5893
5894 *) Bugfix: nginx could not be built on latest Fedora 9 Linux.
5895 Thanks to Roxis.
5896
5897
5898 Changes with nginx 0.7.0 19 May 2008
5899
5900 *) Change: now the 0x00-0x1F, '"' and '\' characters are escaped as \xXX
5901 in an access_log.
5902 Thanks to Maxim Dounin.
5903
5904 *) Change: now nginx allows several "Host" request header line.
5905
5906 *) Feature: the "modified" flag in the "expires" directive.
5907
5908 *) Feature: the $uid_got and $uid_set variables may be used at any
5909 request processing stage.
5910
5911 *) Feature: the $hostname variable.
5912 Thanks to Andrei Nigmatulin.
5913
5914 *) Feature: DESTDIR support.
5915 Thanks to Todd A. Fisher and Andras Voroskoi.
5916
5917 *) Bugfix: a segmentation fault might occur in worker process on Linux,
5918 if keepalive was enabled.
5919
5920
5921 Changes with nginx 0.6.31 12 May 2008
5922
5923 *) Bugfix: nginx did not process FastCGI response if header was at the
5924 end of FastCGI record; the bug had appeared in 0.6.2.
5925 Thanks to Sergey Serov.
5926
5927 *) Bugfix: a segmentation fault might occur in worker process if a file
5928 was deleted and the "open_file_cache_errors" directive was off.
5929
5930
5931 Changes with nginx 0.6.30 29 Apr 2008
5932
5933 *) Change: now if an "include" directive pattern does not match any
5934 file, then nginx does not issue an error.
5935
5936 *) Feature: now the time in directives may be specified without spaces,
5937 for example, "1h50m".
5938
5939 *) Bugfix: memory leaks if the "ssl_verify_client" directive was on.
5940 Thanks to Chavelle Vincent.
5941
5942 *) Bugfix: the "sub_filter" directive might set text to change into
5943 output.
5944
5945 *) Bugfix: the "error_page" directive did not take into account
5946 arguments in redirected URI.
5947
5948 *) Bugfix: now nginx always opens files in binary mode under Cygwin.
5949
5950 *) Bugfix: nginx could not be built on OpenBSD; the bug had appeared in
5951 0.6.15.
5952
5953
5954 Changes with nginx 0.6.29 18 Mar 2008
5955
5956 *) Feature: the ngx_google_perftools_module.
5957
5958 *) Bugfix: the ngx_http_perl_module could not be built on 64-bit
5959 platforms; the bug had appeared in 0.6.27.
5960
5961
5962 Changes with nginx 0.6.28 13 Mar 2008
5963
5964 *) Bugfix: the rtsig method could not be built; the bug had appeared in
5965 0.6.27.
5966
5967
5968 Changes with nginx 0.6.27 12 Mar 2008
5969
5970 *) Change: now by default the rtsig method is not built on
5971 Linux 2.6.18+.
5972
5973 *) Change: now a request method is not changed while redirection to a
5974 named location via an "error_page" directive.
5975
5976 *) Feature: the "resolver" and "resolver_timeout" directives in SMTP
5977 proxy.
5978
5979 *) Feature: the "post_action" directive supports named locations.
5980
5981 *) Bugfix: a segmentation fault occurred in worker process, if a request
5982 was redirected from proxy, FastCGI, or memcached location to static
5983 named locations.
5984
5985 *) Bugfix: browsers did not repeat SSL handshake if there is no valid
5986 client certificate in first handshake.
5987 Thanks to Alexander V. Inyukhin.
5988
5989 *) Bugfix: if response code 495-497 was redirected via an "error_page"
5990 directive without code change, then nginx tried to allocate too many
5991 memory.
5992
5993 *) Bugfix: memory leak in long-lived non buffered connections.
5994
5995 *) Bugfix: memory leak in resolver.
5996
5997 *) Bugfix: a segmentation fault occurred in worker process, if a request
5998 was redirected from proxy, FastCGI, or memcached location to static
5999 named locations.
6000
6001 *) Bugfix: in the $proxy_host and $proxy_port variables caching.
6002 Thanks to Sergey Bochenkov.
6003
6004 *) Bugfix: a "proxy_pass" directive with variables used incorrectly the
6005 same port as in another "proxy_pass" directive with the same host
6006 name and without variables.
6007 Thanks to Sergey Bochenkov.
6008
6009 *) Bugfix: an alert "sendmsg() failed (9: Bad file descriptor)" on some
6010 64-bit platforms while reconfiguration.
6011
6012 *) Bugfix: a segmentation fault occurred in worker process, if empty
6013 stub block was used second time in SSI.
6014
6015 *) Bugfix: in copying URI part contained escaped symbols into arguments.
6016
6017
6018 Changes with nginx 0.6.26 11 Feb 2008
6019
6020 *) Bugfix: the "proxy_store" and "fastcgi_store" directives did not
6021 check a response length.
6022
6023 *) Bugfix: a segmentation fault occurred in worker process, if big value
6024 was used in a "expires" directive.
6025 Thanks to Joaquin Cuenca Abela.
6026
6027 *) Bugfix: nginx incorrectly detected cache line size on Pentium 4.
6028 Thanks to Gena Makhomed.
6029
6030 *) Bugfix: in proxied or FastCGI subrequests a client original method
6031 was used instead of the GET method.
6032
6033 *) Bugfix: socket leak in HTTPS mode if deferred accept was used.
6034 Thanks to Ben Maurer.
6035
6036 *) Bugfix: nginx issued the bogus error message "SSL_shutdown() failed
6037 (SSL: )"; the bug had appeared in 0.6.23.
6038
6039 *) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
6040 error; the bug had appeared in 0.6.23.
6041
6042
6043 Changes with nginx 0.6.25 08 Jan 2008
6044
6045 *) Change: now the "server_name_in_redirect" directive is used instead
6046 of the "server_name" directive's special "*" parameter.
6047
6048 *) Change: now wildcard and regex names can be used as main name in a
6049 "server_name" directive.
6050
6051 *) Change: the "satisfy_any" directive was replaced by the "satisfy"
6052 directive.
6053
6054 *) Workaround: old worker processes might hog CPU after reconfiguration
6055 if they was run under Linux OpenVZ.
6056
6057 *) Feature: the "min_delete_depth" directive.
6058
6059 *) Bugfix: the COPY and MOVE methods did not work with single files.
6060
6061 *) Bugfix: the ngx_http_gzip_static_module did not allow the
6062 ngx_http_dav_module to work; the bug had appeared in 0.6.23.
6063
6064 *) Bugfix: socket leak in HTTPS mode if deferred accept was used.
6065 Thanks to Ben Maurer.
6066
6067 *) Bugfix: nginx could not be built without PCRE library; the bug had
6068 appeared in 0.6.23.
6069
6070
6071 Changes with nginx 0.6.24 27 Dec 2007
6072
6073 *) Bugfix: a segmentation fault might occur in worker process if HTTPS
6074 was used; the bug had appeared in 0.6.23.
6075
6076
6077 Changes with nginx 0.6.23 27 Dec 2007
6078
6079 *) Change: the "off" parameter in the "ssl_session_cache" directive; now
6080 this is default parameter.
6081
6082 *) Change: the "open_file_cache_retest" directive was renamed to the
6083 "open_file_cache_valid".
6084
6085 *) Feature: the "open_file_cache_min_uses" directive.
6086
6087 *) Feature: the ngx_http_gzip_static_module.
6088
6089 *) Feature: the "gzip_disable" directive.
6090
6091 *) Feature: the "memcached_pass" directive may be used inside the "if"
6092 block.
6093
6094 *) Bugfix: a segmentation fault occurred in worker process, if the
6095 "memcached_pass" and "if" directives were used in the same location.
6096
6097 *) Bugfix: if a "satisfy_any on" directive was used and not all access
6098 and auth modules directives were set, then other given access and
6099 auth directives were not tested;
6100
6101 *) Bugfix: regex parameters in a "valid_referers" directive were not
6102 inherited from previous level.
6103
6104 *) Bugfix: a "post_action" directive did run if a request was completed
6105 with 499 status code.
6106
6107 *) Bugfix: optimization of 16K buffer usage in a SSL connection.
6108 Thanks to Ben Maurer.
6109
6110 *) Bugfix: the STARTTLS in SMTP mode did not work.
6111 Thanks to Oleg Motienko.
6112
6113 *) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
6114 error; the bug had appeared in 0.5.13.
6115
6116
6117 Changes with nginx 0.6.22 19 Dec 2007
6118
6119 *) Change: now all ngx_http_perl_module methods return values copied to
6120 perl's allocated memory.
6121
6122 *) Bugfix: if nginx was built with ngx_http_perl_module, the perl before
6123 5.8.6 was used, and perl supported threads, then during
6124 reconfiguration the master process aborted; the bug had appeared in
6125 0.5.9.
6126 Thanks to Boris Zhmurov.
6127
6128 *) Bugfix: the ngx_http_perl_module methods may get invalid values of
6129 the regex captures.
6130
6131 *) Bugfix: a segmentation fault occurred in worker process, if the
6132 $r->has_request_body() method was called for a request whose small
6133 request body was already received.
6134
6135 *) Bugfix: large_client_header_buffers did not freed before going to
6136 keep-alive state.
6137 Thanks to Olexander Shtepa.
6138
6139 *) Bugfix: the last address was missed in the $upstream_addr variable;
6140 the bug had appeared in 0.6.18.
6141
6142 *) Bugfix: the "fastcgi_catch_stderr" directive did return error code;
6143 now it returns 502 code, that can be rerouted to a next server using
6144 the "fastcgi_next_upstream invalid_header" directive.
6145
6146 *) Bugfix: a segmentation fault occurred in master process if the
6147 "fastcgi_catch_stderr" directive was used; the bug had appeared in
6148 0.6.10.
6149 Thanks to Manlio Perillo.
6150
6151
6152 Changes with nginx 0.6.21 03 Dec 2007
6153
6154 *) Change: if variable values used in a "proxy_pass" directive contain
6155 IP-addresses only, then a "resolver" directive is not mandatory.
6156
6157 *) Bugfix: a segmentation fault might occur in worker process if a
6158 "proxy_pass" directive with URI-part was used; the bug had appeared
6159 in 0.6.19.
6160
6161 *) Bugfix: if resolver was used on platform that does not support
6162 kqueue, then nginx issued an alert "name is out of response".
6163 Thanks to Andrei Nigmatulin.
6164
6165 *) Bugfix: if the $server_protocol was used in FastCGI parameters and a
6166 request line length was near to the "client_header_buffer_size"
6167 directive value, then nginx issued an alert "fastcgi: the request
6168 record is too big".
6169
6170 *) Bugfix: if a plain text HTTP/0.9 version request was made to HTTPS
6171 server, then nginx returned usual response.
6172
6173
6174 Changes with nginx 0.6.20 28 Nov 2007
6175
6176 *) Bugfix: a segmentation fault might occur in worker process if a
6177 "proxy_pass" directive with URI-part was used; the bug had appeared
6178 in 0.6.19.
6179
6180
6181 Changes with nginx 0.6.19 27 Nov 2007
6182
6183 *) Bugfix: the 0.6.18 version could not be built.
6184
6185
6186 Changes with nginx 0.6.18 27 Nov 2007
6187
6188 *) Change: now the ngx_http_userid_module adds start time microseconds
6189 to the cookie field contains a pid value.
6190
6191 *) Change: now the full request line instead of URI only is written to
6192 error_log.
6193
6194 *) Feature: variables support in the "proxy_pass" directive.
6195
6196 *) Feature: the "resolver" and "resolver_timeout" directives.
6197
6198 *) Feature: now the directive "add_header last-modified ''" deletes a
6199 "Last-Modified" response header line.
6200
6201 *) Bugfix: the "limit_rate" directive did not allow to use full
6202 throughput, even if limit value was very high.
6203
6204
6205 Changes with nginx 0.6.17 15 Nov 2007
6206
6207 *) Feature: the "If-Range" request header line support.
6208 Thanks to Alexander V. Inyukhin.
6209
6210 *) Bugfix: URL double escaping in a redirect of the "msie_refresh"
6211 directive; the bug had appeared in 0.6.4.
6212
6213 *) Bugfix: the "autoindex" directive did not work with the "alias /"
6214 directive.
6215
6216 *) Bugfix: a segmentation fault might occur in worker process if
6217 subrequests were used.
6218
6219 *) Bugfix: the big responses may be transferred truncated if SSL and
6220 gzip were used.
6221
6222 *) Bugfix: the $status variable was equal to 0 if a proxied server
6223 returned response in HTTP/0.9 version.
6224
6225
6226 Changes with nginx 0.6.16 29 Oct 2007
6227
6228 *) Change: now the uname(2) is used on Linux instead of procfs.
6229 Thanks to Ilya Novikov.
6230
6231 *) Bugfix: if the "?" character was in a "error_page" directive, then it
6232 was escaped in a proxied request; the bug had appeared in 0.6.11.
6233
6234 *) Bugfix: compatibility with mget.
6235
6236
6237 Changes with nginx 0.6.15 22 Oct 2007
6238
6239 *) Feature: Cygwin compatibility.
6240 Thanks to Vladimir Kutakov.
6241
6242 *) Feature: the "merge_slashes" directive.
6243
6244 *) Feature: the "gzip_vary" directive.
6245
6246 *) Feature: the "server_tokens" directive.
6247
6248 *) Bugfix: nginx did not unescape URI in the "include" SSI command.
6249
6250 *) Bugfix: the segmentation fault was occurred on start or while
6251 reconfiguration if variable was used in the "charset" or
6252 "source_charset" directives.
6253
6254 *) Bugfix: nginx returned the 400 response on requests like
6255 "GET http://www.domain.com HTTP/1.0".
6256 Thanks to James Oakley.
6257
6258 *) Bugfix: if request with request body was redirected using the
6259 "error_page" directive, then nginx tried to read the request body
6260 again; the bug had appeared in 0.6.7.
6261
6262 *) Bugfix: a segmentation fault occurred in worker process if no
6263 server_name was explicitly defined for server processing request; the
6264 bug had appeared in 0.6.7.
6265
6266
6267 Changes with nginx 0.6.14 15 Oct 2007
6268
6269 *) Change: now by default the "echo" SSI command uses entity encoding.
6270
6271 *) Feature: the "encoding" parameter in the "echo" SSI command.
6272
6273 *) Feature: the "access_log" directive may be used inside the
6274 "limit_except" block.
6275
6276 *) Bugfix: if all upstream servers were failed, then all servers had got
6277 weight the was equal one until servers became alive; the bug had
6278 appeared in 0.6.6.
6279
6280 *) Bugfix: a segmentation fault occurred in worker process if
6281 $date_local and $date_gmt were used outside the
6282 ngx_http_ssi_filter_module.
6283
6284 *) Bugfix: a segmentation fault might occur in worker process if debug
6285 log was enabled.
6286 Thanks to Andrei Nigmatulin.
6287
6288 *) Bugfix: ngx_http_memcached_module did not set
6289 $upstream_response_time.
6290 Thanks to Maxim Dounin.
6291
6292 *) Bugfix: a worker process may got caught in an endless loop, if the
6293 memcached was used.
6294
6295 *) Bugfix: nginx supported low case only "close" and "keep-alive" values
6296 in the "Connection" request header line; the bug had appeared in
6297 0.6.11.
6298
6299 *) Bugfix: sub_filter did not work with empty substitution.
6300
6301 *) Bugfix: in sub_filter parsing.
6302
6303
6304 Changes with nginx 0.6.13 24 Sep 2007
6305
6306 *) Bugfix: nginx did not close directory file on HEAD request if
6307 autoindex was used.
6308 Thanks to Arkadiusz Patyk.
6309
6310
6311 Changes with nginx 0.6.12 21 Sep 2007
6312
6313 *) Change: mail proxy was split on three modules: pop3, imap and smtp.
6314
6315 *) Feature: the --without-mail_pop3_module, --without-mail_imap_module,
6316 and --without-mail_smtp_module configuration parameters.
6317
6318 *) Feature: the "smtp_greeting_delay" and "smtp_client_buffer"
6319 directives of the ngx_mail_smtp_module.
6320
6321 *) Bugfix: the trailing wildcards did not work; the bug had appeared in
6322 0.6.9.
6323
6324 *) Bugfix: nginx could not start on Solaris if the shared PCRE library
6325 located in non-standard place was used.
6326
6327 *) Bugfix: the "proxy_hide_header" and "fastcgi_hide_header" directives
6328 did not hide response header lines whose name was longer than 32
6329 characters.
6330 Thanks to Manlio Perillo.
6331
6332
6333 Changes with nginx 0.6.11 11 Sep 2007
6334
6335 *) Bugfix: active connection counter always increased if mail proxy was
6336 used.
6337
6338 *) Bugfix: if backend returned response header only using non-buffered
6339 proxy, then nginx closed backend connection on timeout.
6340
6341 *) Bugfix: nginx did not support several "Connection" request header
6342 lines.
6343
6344 *) Bugfix: if the "max_fails" was set for upstream server, then after
6345 first failure server weight was always one; the bug had appeared in
6346 0.6.6.
6347
6348
6349 Changes with nginx 0.6.10 03 Sep 2007
6350
6351 *) Feature: the "open_file_cache", "open_file_cache_retest", and
6352 "open_file_cache_errors" directives.
6353
6354 *) Bugfix: socket leak; the bug had appeared in 0.6.7.
6355
6356 *) Bugfix: a charset set by the "charset" directive was not appended to
6357 the "Content-Type" header set by $r->send_http_header().
6358
6359 *) Bugfix: a segmentation fault might occur in worker process if
6360 /dev/poll method was used.
6361
6362
6363 Changes with nginx 0.6.9 28 Aug 2007
6364
6365 *) Bugfix: a worker process may got caught in an endless loop, if the
6366 HTTPS protocol was used; the bug had appeared in 0.6.7.
6367
6368 *) Bugfix: if server listened on two addresses or ports and trailing
6369 wildcard was used, then nginx did not run.
6370
6371 *) Bugfix: the "ip_hash" directive might incorrectly mark servers as
6372 down.
6373
6374 *) Bugfix: nginx could not be built on amd64; the bug had appeared in
6375 0.6.8.
6376
6377
6378 Changes with nginx 0.6.8 20 Aug 2007
6379
6380 *) Change: now nginx tries to set the "worker_priority",
6381 "worker_rlimit_nofile", "worker_rlimit_core", and
6382 "worker_rlimit_sigpending" without super-user privileges.
6383
6384 *) Change: now nginx escapes space and "%" in request to a mail proxy
6385 authentication server.
6386
6387 *) Change: now nginx escapes "%" in $memcached_key variable.
6388
6389 *) Bugfix: nginx used path relative to configuration prefix for
6390 non-absolute configuration file path specified in the "-c" key; the
6391 bug had appeared in 0.6.6.
6392
6393 *) Bugfix: nginx did not work on FreeBSD/sparc64.
6394
6395
6396 Changes with nginx 0.6.7 15 Aug 2007
6397
6398 *) Change: now the paths specified in the "include",
6399 "auth_basic_user_file", "perl_modules", "ssl_certificate",
6400 "ssl_certificate_key", and "ssl_client_certificate" directives are
6401 relative to directory of nginx configuration file nginx.conf, but not
6402 to nginx prefix directory.
6403
6404 *) Change: the --sysconfdir=PATH option in configure was canceled.
6405
6406 *) Change: the special make target "upgrade1" was defined for online
6407 upgrade of 0.1.x versions.
6408
6409 *) Feature: the "server_name" and "valid_referers" directives support
6410 regular expressions.
6411
6412 *) Feature: the "server" directive in the "upstream" context supports
6413 the "backup" parameter.
6414
6415 *) Feature: the ngx_http_perl_module supports the
6416 $r->discard_request_body.
6417
6418 *) Feature: the "add_header Last-Modified ..." directive changes the
6419 "Last-Modified" response header line.
6420
6421 *) Bugfix: if a response different than 200 was returned to a request
6422 with body and connection went to the keep-alive state after the
6423 request, then nginx returned 400 for the next request.
6424
6425 *) Bugfix: a segmentation fault occurred in worker process if invalid
6426 address was set in the "auth_http" directive.
6427
6428 *) Bugfix: now nginx uses default listen backlog value 511 on all
6429 platforms except FreeBSD.
6430 Thanks to Jiang Hong.
6431
6432 *) Bugfix: a worker process may got caught in an endless loop, if a
6433 "server" inside "upstream" block was marked as "down"; the bug had
6434 appeared in 0.6.6.
6435
6436 *) Bugfix: now Solaris sendfilev() is not used to transfer the client
6437 request body to FastCGI-server via the unix domain socket.
6438
6439
6440 Changes with nginx 0.6.6 30 Jul 2007
6441
6442 *) Feature: the --sysconfdir=PATH option in configure.
6443
6444 *) Feature: named locations.
6445
6446 *) Feature: the $args variable can be set with the "set" directive.
6447
6448 *) Feature: the $is_args variable.
6449
6450 *) Bugfix: fair big weight upstream balancer.
6451
6452 *) Bugfix: if a client has closed connection to mail proxy then nginx
6453 might not close connection to backend.
6454
6455 *) Bugfix: if the same host without specified port was used as backend
6456 for HTTP and HTTPS, then nginx used only one port - 80 or 443.
6457
6458 *) Bugfix: fix building on Solaris/amd64 by Sun Studio 11 and early
6459 versions; the bug had appeared in 0.6.4.
6460
6461
6462 Changes with nginx 0.6.5 23 Jul 2007
6463
6464 *) Feature: $nginx_version variable.
6465 Thanks to Nick S. Grechukh.
6466
6467 *) Feature: the mail proxy supports AUTHENTICATE in IMAP mode.
6468 Thanks to Maxim Dounin.
6469
6470 *) Feature: the mail proxy supports STARTTLS in SMTP mode.
6471 Thanks to Maxim Dounin.
6472
6473 *) Bugfix: now nginx escapes space in $memcached_key variable.
6474
6475 *) Bugfix: nginx was incorrectly built by Sun Studio on Solaris/amd64.
6476 Thanks to Jiang Hong.
6477
6478 *) Bugfix: of minor potential bugs.
6479 Thanks to Coverity's Scan.
6480
6481
6482 Changes with nginx 0.6.4 17 Jul 2007
6483
6484 *) Security: the "msie_refresh" directive allowed XSS.
6485 Thanks to Maxim Boguk.
6486
6487 *) Change: the "proxy_store" and "fastcgi_store" directives were
6488 changed.
6489
6490 *) Feature: the "proxy_store_access" and "fastcgi_store_access"
6491 directives.
6492
6493 *) Bugfix: nginx did not work on Solaris/sparc64 if it was built by Sun
6494 Studio.
6495 Thanks to Andrei Nigmatulin.
6496
6497 *) Workaround: for Sun Studio 12.
6498 Thanks to Jiang Hong.
6499
6500
6501 Changes with nginx 0.6.3 12 Jul 2007
6502
6503 *) Feature: the "proxy_store" and "fastcgi_store" directives.
6504
6505 *) Bugfix: a segmentation fault might occur in worker process if the
6506 "auth_http_header" directive was used.
6507 Thanks to Maxim Dounin.
6508
6509 *) Bugfix: a segmentation fault occurred in worker process if the
6510 CRAM-MD5 authentication method was used, but it was not enabled.
6511
6512 *) Bugfix: a segmentation fault might occur in worker process when the
6513 HTTPS protocol was used in the "proxy_pass" directive.
6514
6515 *) Bugfix: a segmentation fault might occur in worker process if the
6516 eventport method was used.
6517
6518 *) Bugfix: the "proxy_ignore_client_abort" and
6519 "fastcgi_ignore_client_abort" directives did not work; the bug had
6520 appeared in 0.5.13.
6521
6522
6523 Changes with nginx 0.6.2 09 Jul 2007
6524
6525 *) Bugfix: if the FastCGI header was split in records, then nginx passed
6526 garbage in the header to a client.
6527
6528
6529 Changes with nginx 0.6.1 17 Jun 2007
6530
6531 *) Bugfix: in SSI parsing.
6532
6533 *) Bugfix: if remote SSI subrequest was used, then posterior local file
6534 subrequest might transferred to client in wrong order.
6535
6536 *) Bugfix: large SSI inclusions buffered in temporary files were
6537 truncated.
6538
6539 *) Bugfix: the perl $$ variable value in ngx_http_perl_module was equal
6540 to the master process identification number.
6541
6542
6543 Changes with nginx 0.6.0 14 Jun 2007
6544
6545 *) Feature: the "server_name", "map", and "valid_referers" directives
6546 support the "www.example.*" wildcards.
6547
6548
6549 Changes with nginx 0.5.25 11 Jun 2007
6550
6551 *) Bugfix: nginx could not be built with the
6552 --without-http_rewrite_module parameter; the bug had appeared in
6553 0.5.24.
6554
6555
6556 Changes with nginx 0.5.24 06 Jun 2007
6557
6558 *) Security: the "ssl_verify_client" directive did not work if request
6559 was made using HTTP/0.9.
6560
6561 *) Bugfix: a part of response body might be passed uncompressed if gzip
6562 was used; the bug had appeared in 0.5.23.
6563
6564
6565 Changes with nginx 0.5.23 04 Jun 2007
6566
6567 *) Feature: the ngx_http_ssl_module supports Server Name Indication TLS
6568 extension.
6569
6570 *) Feature: the "fastcgi_catch_stderr" directive.
6571 Thanks to Nick S. Grechukh, OWOX project.
6572
6573 *) Bugfix: a segmentation fault occurred in master process if two
6574 virtual servers should bind() to the overlapping ports.
6575
6576 *) Bugfix: if nginx was built with ngx_http_perl_module and perl
6577 supported threads, then during second reconfiguration the error
6578 messages "panic: MUTEX_LOCK" and "perl_parse() failed" were issued.
6579
6580 *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
6581
6582
6583 Changes with nginx 0.5.22 29 May 2007
6584
6585 *) Bugfix: a big request body might not be passed to backend; the bug
6586 had appeared in 0.5.21.
6587
6588
6589 Changes with nginx 0.5.21 28 May 2007
6590
6591 *) Bugfix: if server has more than about ten locations, then regex
6592 locations might be chosen not in that order as they were specified.
6593
6594 *) Bugfix: a worker process may got caught in an endless loop on 64-bit
6595 platform, if the 33-rd or next in succession backend has failed.
6596 Thanks to Anton Povarov.
6597
6598 *) Bugfix: a bus error might occur on Solaris/sparc64 if the PCRE
6599 library was used.
6600 Thanks to Andrei Nigmatulin.
6601
6602 *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
6603
6604
6605 Changes with nginx 0.5.20 07 May 2007
6606
6607 *) Feature: the "sendfile_max_chunk" directive.
6608
6609 *) Feature: the "$http_...", "$sent_http_...", and "$upstream_http_..."
6610 variables may be changed using the "set" directive.
6611
6612 *) Bugfix: a segmentation fault might occur in worker process if the SSI
6613 command 'if expr="$var = /"' was used.
6614
6615 *) Bugfix: trailing boundary of multipart range response was transferred
6616 incorrectly.
6617 Thanks to Evan Miller.
6618
6619 *) Bugfix: nginx did not work on Solaris/sparc64 if it was built by Sun
6620 Studio.
6621 Thanks to Andrei Nigmatulin.
6622
6623 *) Bugfix: the ngx_http_perl_module could not be built by Solaris make.
6624 Thanks to Andrei Nigmatulin.
6625
6626
6627 Changes with nginx 0.5.19 24 Apr 2007
6628
6629 *) Change: now the $request_time variable has millisecond precision.
6630
6631 *) Change: the method $r->rflush of ngx_http_perl_module was renamed to
6632 the $r->flush.
6633
6634 *) Feature: the $upstream_addr variable.
6635
6636 *) Feature: the "proxy_headers_hash_max_size" and
6637 "proxy_headers_hash_bucket_size" directives.
6638 Thanks to Volodymyr Kostyrko.
6639
6640 *) Bugfix: the files more than 2G could not be transferred using
6641 sendfile and limit_rate on 64-bit platforms.
6642
6643 *) Bugfix: the files more than 2G could not be transferred using
6644 sendfile on 64-bit Linux.
6645
6646
6647 Changes with nginx 0.5.18 19 Apr 2007
6648
6649 *) Feature: the ngx_http_sub_filter_module.
6650
6651 *) Feature: the "$upstream_http_..." variables.
6652
6653 *) Feature: now the $upstream_status and $upstream_response_time
6654 variables keep data about all upstreams before X-Accel-Redirect.
6655
6656 *) Bugfix: a segmentation fault occurred in master process after first
6657 reconfiguration and receiving any signal if nginx was built with
6658 ngx_http_perl_module and perl did not support multiplicity; the bug
6659 had appeared in 0.5.9.
6660
6661 *) Bugfix: if perl did not support multiplicity, then after
6662 reconfiguration perl code did not work; the bug had appeared in
6663 0.3.38.
6664
6665
6666 Changes with nginx 0.5.17 02 Apr 2007
6667
6668 *) Change: now nginx always returns the 405 status for the TRACE method.
6669
6670 *) Feature: now nginx supports the "include" directive inside the
6671 "types" block.
6672
6673 *) Bugfix: the $document_root variable usage in the "root" and "alias"
6674 directives is disabled: this caused recursive stack overflow.
6675
6676 *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
6677
6678 *) Bugfix: in some cases non-cacheable variables (such as $uri variable)
6679 returned old cached value.
6680
6681
6682 Changes with nginx 0.5.16 26 Mar 2007
6683
6684 *) Bugfix: the C-class network was not used as hash key in the "ip_hash"
6685 directive.
6686 Thanks to Pavel Yarkovoy.
6687
6688 *) Bugfix: a segmentation fault might occur in worker process if a
6689 charset was set in the "Content-Type" header line and the line has
6690 trailing ";"; the bug had appeared in 0.3.50.
6691
6692 *) Bugfix: the "[alert] zero size buf" error when FastCGI server was
6693 used and a request body written in a temporary file was multiple of
6694 32K.
6695
6696 *) Bugfix: nginx could not be built on Solaris without the --with-debug
6697 option; the bug had appeared in 0.5.15.
6698
6699
6700 Changes with nginx 0.5.15 19 Mar 2007
6701
6702 *) Feature: the mail proxy supports authenticated SMTP proxying and the
6703 "smtp_auth", "smtp_capabilities", and "xclient" directives.
6704 Thanks to Anton Yuzhaninov and Maxim Dounin.
6705
6706 *) Feature: now the keep-alive connections are closed just after
6707 receiving the reconfiguration signal.
6708
6709 *) Change: the "imap" and "auth" directives were renamed to the "mail"
6710 and "pop3_auth" directives.
6711
6712 *) Bugfix: a segmentation fault occurred in worker process if the
6713 CRAM-MD5 authentication method was used and the APOP method was
6714 disabled.
6715
6716 *) Bugfix: if the "starttls only" directive was used in POP3 protocol,
6717 then nginx allowed authentication without switching to the SSL mode.
6718
6719 *) Bugfix: worker processes did not exit after reconfiguration and did
6720 not rotate logs if the eventport method was used.
6721
6722 *) Bugfix: a worker process may got caught in an endless loop, if the
6723 "ip_hash" directive was used.
6724
6725 *) Bugfix: now nginx does not log some alerts if eventport or /dev/poll
6726 methods are used.
6727
6728
6729 Changes with nginx 0.5.14 23 Feb 2007
6730
6731 *) Bugfix: nginx ignored superfluous closing "}" in the end of
6732 configuration file.
6733
6734
6735 Changes with nginx 0.5.13 19 Feb 2007
6736
6737 *) Feature: the COPY and MOVE methods.
6738
6739 *) Bugfix: the ngx_http_realip_module set garbage for requests passed
6740 via keep-alive connection.
6741
6742 *) Bugfix: nginx did not work on big-endian 64-bit Linux.
6743 Thanks to Andrei Nigmatulin.
6744
6745 *) Bugfix: now when IMAP/POP3 proxy receives too long command it closes
6746 the connection right away, but not after timeout.
6747
6748 *) Bugfix: if the "epoll" method was used and a client closed a
6749 connection prematurely, then nginx closed the connection after a send
6750 timeout only.
6751
6752 *) Bugfix: nginx could not be built on platforms different from i386,
6753 amd64, sparc, and ppc; the bug had appeared in 0.5.8.
6754
6755
6756 Changes with nginx 0.5.12 12 Feb 2007
6757
6758 *) Bugfix: nginx could not be built on platforms different from i386,
6759 amd64, sparc, and ppc; the bug had appeared in 0.5.8.
6760
6761 *) Bugfix: a segmentation fault might occur in worker process if the
6762 temporary files were used while working with FastCGI server; the bug
6763 had appeared in 0.5.8.
6764
6765 *) Bugfix: a segmentation fault might occur in worker process if the
6766 $fastcgi_script_name variable was logged.
6767
6768 *) Bugfix: ngx_http_perl_module could not be built on Solaris.
6769
6770
6771 Changes with nginx 0.5.11 05 Feb 2007
6772
6773 *) Feature: now configure detects system PCRE library in MacPorts.
6774 Thanks to Chris McGrath.
6775
6776 *) Bugfix: the response was incorrect if several ranges were requested;
6777 the bug had appeared in 0.5.6.
6778
6779 *) Bugfix: the "create_full_put_path" directive could not create the
6780 intermediate directories if no "dav_access" directive was set.
6781 Thanks to Evan Miller.
6782
6783 *) Bugfix: the "0" response code might be logged in the access_log
6784 instead of the "400" and "408" error codes.
6785
6786 *) Bugfix: a segmentation fault might occur in worker process if nginx
6787 was built with -O2 optimization.
6788
6789
6790 Changes with nginx 0.5.10 26 Jan 2007
6791
6792 *) Bugfix: while online executable file upgrade the new master process
6793 did not inherit the listening sockets; the bug had appeared in 0.5.9.
6794
6795 *) Bugfix: a segmentation fault might occur in worker process if nginx
6796 was built with -O2 optimization; the bug had appeared in 0.5.1.
6797
6798
6799 Changes with nginx 0.5.9 25 Jan 2007
6800
6801 *) Change: now the ngx_http_memcached_module uses the $memcached_key
6802 variable value as a key.
6803
6804 *) Feature: the $memcached_key variable.
6805
6806 *) Feature: the "clean" parameter in the "client_body_in_file_only"
6807 directive.
6808
6809 *) Feature: the "env" directive.
6810
6811 *) Feature: the "sendfile" directive is available inside the "if" block.
6812
6813 *) Feature: now on failure of the writing to access nginx logs a message
6814 to error_log, but not more often than once a minute.
6815
6816 *) Bugfix: the "access_log off" directive did not always turn off the
6817 logging.
6818
6819
6820 Changes with nginx 0.5.8 19 Jan 2007
6821
6822 *) Bugfix: a segmentation fault might occur if
6823 "client_body_in_file_only on" was used and a request body was small.
6824
6825 *) Bugfix: a segmentation fault occurred if
6826 "client_body_in_file_only on" and "proxy_pass_request_body off" or
6827 "fastcgi_pass_request_body off" directives were used, and nginx
6828 switched to a next upstream.
6829
6830 *) Bugfix: if the "proxy_buffering off" directive was used and a client
6831 connection was non-active, then the connection was closed after send
6832 timeout; the bug had appeared in 0.4.7.
6833
6834 *) Bugfix: if the "epoll" method was used and a client closed a
6835 connection prematurely, then nginx closed the connection after a send
6836 timeout only.
6837
6838 *) Bugfix: the "[alert] zero size buf" error when FastCGI server was
6839 used.
6840
6841 *) Bugfixes in the "limit_zone" directive.
6842
6843
6844 Changes with nginx 0.5.7 15 Jan 2007
6845
6846 *) Feature: the ssl_session_cache storage optimization.
6847
6848 *) Bugfixes in the "ssl_session_cache" and "limit_zone" directives.
6849
6850 *) Bugfix: the segmentation fault was occurred on start or while
6851 reconfiguration if the "ssl_session_cache" or "limit_zone" directives
6852 were used on 64-bit platforms.
6853
6854 *) Bugfix: a segmentation fault occurred if the "add_before_body" or
6855 "add_after_body" directives were used and there was no "Content-Type"
6856 header line in response.
6857
6858 *) Bugfix: the OpenSSL library was always built with the threads
6859 support.
6860 Thanks to Den Ivanov.
6861
6862 *) Bugfix: the PCRE-6.5+ library and the icc compiler compatibility.
6863
6864
6865 Changes with nginx 0.5.6 09 Jan 2007
6866
6867 *) Change: now the ngx_http_index_module ignores all methods except the
6868 GET, HEAD, and POST methods.
6869
6870 *) Feature: the ngx_http_limit_zone_module.
6871
6872 *) Feature: the $binary_remote_addr variable.
6873
6874 *) Feature: the "ssl_session_cache" directives of the
6875 ngx_http_ssl_module and ngx_imap_ssl_module.
6876
6877 *) Feature: the DELETE method supports recursive removal.
6878
6879 *) Bugfix: the byte-ranges were transferred incorrectly if the
6880 $r->sendfile() was used.
6881
6882
6883 Changes with nginx 0.5.5 24 Dec 2006
6884
6885 *) Change: the -v switch does not show compiler information any more.
6886
6887 *) Feature: the -V switch.
6888
6889 *) Feature: the "worker_rlimit_core" directive supports size in K, M,
6890 and G.
6891
6892 *) Bugfix: the nginx.pm module now could be installed by an unprivileged
6893 user.
6894
6895 *) Bugfix: a segmentation fault might occur if the $r->request_body or
6896 $r->request_body_file methods were used.
6897
6898 *) Bugfix: the ppc platform specific bugs.
6899
6900
6901 Changes with nginx 0.5.4 15 Dec 2006
6902
6903 *) Feature: the "perl" directive may be used inside the "limit_except"
6904 block.
6905
6906 *) Bugfix: the ngx_http_dav_module required the "Date" request header
6907 line for the DELETE method.
6908
6909 *) Bugfix: if one only parameter was used in the "dav_access" directive,
6910 then nginx might report about configuration error.
6911
6912 *) Bugfix: a segmentation fault might occur if the $host variable was
6913 used; the bug had appeared in 0.4.14.
6914
6915
6916 Changes with nginx 0.5.3 13 Dec 2006
6917
6918 *) Feature: the ngx_http_perl_module supports the $r->status,
6919 $r->log_error, and $r->sleep methods.
6920
6921 *) Feature: the $r->variable method supports variables that do not exist
6922 in nginx configuration.
6923
6924 *) Bugfix: the $r->has_request_body method did not work.
6925
6926
6927 Changes with nginx 0.5.2 11 Dec 2006
6928
6929 *) Bugfix: if the "proxy_pass" directive used the name of the "upstream"
6930 block, then nginx tried to resolve the name; the bug had appeared in
6931 0.5.1.
6932
6933
6934 Changes with nginx 0.5.1 11 Dec 2006
6935
6936 *) Bugfix: the "post_action" directive might not run after a
6937 unsuccessful completion of a request.
6938
6939 *) Workaround: for Eudora for Mac; the bug had appeared in 0.4.11.
6940 Thanks to Bron Gondwana.
6941
6942 *) Bugfix: if the "upstream" name was used in the "fastcgi_pass", then
6943 the message "no port in upstream" was issued; the bug had appeared in
6944 0.5.0.
6945
6946 *) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the
6947 same servers but different ports, then these directives uses the
6948 first described port; the bug had appeared in 0.5.0.
6949
6950 *) Bugfix: if the "proxy_pass" and "fastcgi_pass" directives used the
6951 unix domain sockets, then these directives used first described
6952 socket; the bug had appeared in 0.5.0.
6953
6954 *) Bugfix: ngx_http_auth_basic_module ignored the user if it was in the
6955 last line in the password file and there was no the carriage return,
6956 the line feed, or the ":" symbol after the password.
6957
6958 *) Bugfix: the $upstream_response_time variable might be equal to
6959 "0.000", although response time was more than 1 millisecond.
6960
6961
6962 Changes with nginx 0.5.0 04 Dec 2006
6963
6964 *) Change: the parameters in the "%name" form in the "log_format"
6965 directive are not supported anymore.
6966
6967 *) Change: the "proxy_upstream_max_fails",
6968 "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails",
6969 "fastcgi_upstream_fail_timeout", "memcached_upstream_max_fails", and
6970 "memcached_upstream_fail_timeout" directives are not supported
6971 anymore.
6972
6973 *) Feature: the "server" directive in the "upstream" context supports
6974 the "max_fails", "fail_timeout", and "down" parameters.
6975
6976 *) Feature: the "ip_hash" directive inside the "upstream" block.
6977
6978 *) Feature: the WAIT status in the "Auth-Status" header line of the
6979 IMAP/POP3 proxy authentication server response.
6980
6981 *) Bugfix: nginx could not be built on 64-bit platforms; the bug had
6982 appeared in 0.4.14.
6983
6984
6985 Changes with nginx 0.4.14 27 Nov 2006
6986
6987 *) Feature: the "proxy_pass_error_message" directive in IMAP/POP3 proxy.
6988
6989 *) Feature: now configure detects system PCRE library on FreeBSD, Linux,
6990 and NetBSD.
6991
6992 *) Bugfix: ngx_http_perl_module did not work with perl built with the
6993 threads support; the bug had appeared in 0.3.38.
6994
6995 *) Bugfix: ngx_http_perl_module did not work if perl was called
6996 recursively.
6997
6998 *) Bugfix: nginx ignored a host name in a request line.
6999
7000 *) Bugfix: a worker process may got caught in an endless loop, if a
7001 FastCGI server sent too many data to the stderr.
7002
7003 *) Bugfix: the $upstream_response_time variable may be negative if the
7004 system time was changed backward.
7005
7006 *) Bugfix: the "Auth-Login-Attempt" parameter was not sent to IMAP/POP3
7007 proxy authentication server when POP3 was used.
7008
7009 *) Bugfix: a segmentation fault might occur if connect to IMAP/POP3
7010 proxy authentication server failed.
7011
7012
7013 Changes with nginx 0.4.13 15 Nov 2006
7014
7015 *) Feature: the "proxy_pass" directive may be used inside the
7016 "limit_except" block.
7017
7018 *) Feature: the "limit_except" directive supports all WebDAV methods.
7019
7020 *) Bugfix: if the "add_before_body" directive was used without the
7021 "add_after_body" directive, then a response did not transferred
7022 complete.
7023
7024 *) Bugfix: a large request body did not receive if the epoll method and
7025 the deferred accept() were used.
7026
7027 *) Bugfix: a charset could not be set for ngx_http_autoindex_module
7028 responses; the bug had appeared in 0.3.50.
7029
7030 *) Bugfix: the "[alert] zero size buf" error when FastCGI server was
7031 used;
7032
7033 *) Bugfix: the --group= configuration parameter was ignored.
7034 Thanks to Thomas Moschny.
7035
7036 *) Bugfix: the 50th subrequest in SSI response did not work; the bug had
7037 appeared in 0.3.50.
7038
7039
7040 Changes with nginx 0.4.12 31 Oct 2006
7041
7042 *) Feature: the ngx_http_perl_module supports the $r->variable method.
7043
7044 *) Bugfix: if a big static file was included using SSI in a response,
7045 then the response may be transferred incomplete.
7046
7047 *) Bugfix: nginx did not omit the "#fragment" part in URI.
7048
7049
7050 Changes with nginx 0.4.11 25 Oct 2006
7051
7052 *) Feature: the POP3 proxy supports the AUTH LOGIN PLAIN and CRAM-MD5.
7053
7054 *) Feature: the ngx_http_perl_module supports the $r->allow_ranges
7055 method.
7056
7057 *) Bugfix: if the APOP was enabled in the POP3 proxy, then the USER/PASS
7058 commands might not work; the bug had appeared in 0.4.10.
7059
7060
7061 Changes with nginx 0.4.10 23 Oct 2006
7062
7063 *) Feature: the POP3 proxy supports the APOP command.
7064
7065 *) Bugfix: if the select, poll or /dev/poll methods were used, then
7066 while waiting authentication server response the IMAP/POP3 proxy
7067 hogged CPU.
7068
7069 *) Bugfix: a segmentation fault might occur if the $server_addr variable
7070 was used in the "map" directive.
7071
7072 *) Bugfix: the ngx_http_flv_module did not support the byte ranges for
7073 full responses; the bug had appeared in 0.4.7.
7074
7075 *) Bugfix: nginx could not be built on Debian amd64; the bug had
7076 appeared in 0.4.9.
7077
7078
7079 Changes with nginx 0.4.9 13 Oct 2006
7080
7081 *) Feature: the "set" parameter in the "include" SSI command.
7082
7083 *) Feature: the ngx_http_perl_module now tests the nginx.pm module
7084 version.
7085
7086
7087 Changes with nginx 0.4.8 11 Oct 2006
7088
7089 *) Bugfix: if an "include" SSI command were before another "include" SSI
7090 command with a "wait" parameter, then the "wait" parameter might not
7091 work.
7092
7093 *) Bugfix: the ngx_http_flv_module added the FLV header to the full
7094 responses.
7095 Thanks to Alexey Kovyrin.
7096
7097
7098 Changes with nginx 0.4.7 10 Oct 2006
7099
7100 *) Feature: the ngx_http_flv_module.
7101
7102 *) Feature: the $request_body_file variable.
7103
7104 *) Feature: the "charset" and "source_charset" directives support the
7105 variables.
7106
7107 *) Bugfix: if an "include" SSI command were before another "include" SSI
7108 command with a "wait" parameter, then the "wait" parameter might not
7109 work.
7110
7111 *) Bugfix: if the "proxy_buffering off" directive was used or while
7112 working with memcached the connections might not be closed on
7113 timeout.
7114
7115 *) Bugfix: nginx did not run on 64-bit platforms except amd64, sparc64,
7116 and ppc64.
7117
7118
7119 Changes with nginx 0.4.6 06 Oct 2006
7120
7121 *) Bugfix: nginx did not run on 64-bit platforms except amd64, sparc64,
7122 and ppc64.
7123
7124 *) Bugfix: nginx sent the chunked response for HTTP/1.1 request,
7125 if its length was set by text string in the
7126 $r->headers_out("Content-Length", ...) method.
7127
7128 *) Bugfix: after redirecting error by an "error_page" directive any
7129 ngx_http_rewrite_module directive returned this error code; the bug
7130 had appeared in 0.4.4.
7131
7132
7133 Changes with nginx 0.4.5 02 Oct 2006
7134
7135 *) Bugfix: nginx could not be built on Linux and Solaris; the bug had
7136 appeared in 0.4.4.
7137
7138
7139 Changes with nginx 0.4.4 02 Oct 2006
7140
7141 *) Feature: the $scheme variable.
7142
7143 *) Feature: the "expires" directive supports the "max" parameter.
7144
7145 *) Feature: the "include" directive supports the "*" mask.
7146 Thanks to Jonathan Dance.
7147
7148 *) Bugfix: the "return" directive always overrode the "error_page"
7149 response code redirected by the "error_page" directive.
7150
7151 *) Bugfix: a segmentation fault occurred if zero-length body was in PUT
7152 method.
7153
7154 *) Bugfix: the redirect was changed incorrectly if the variables were
7155 used in the "proxy_redirect" directive.
7156
7157
7158 Changes with nginx 0.4.3 26 Sep 2006
7159
7160 *) Change: now the 499 error could not be redirected using an
7161 "error_page" directive.
7162
7163 *) Feature: the Solaris 10 event ports support.
7164
7165 *) Feature: the ngx_http_browser_module.
7166
7167 *) Bugfix: a segmentation fault may occur while redirecting the 400
7168 error to the proxied server using a "proxy_pass" directive.
7169
7170 *) Bugfix: a segmentation fault occurred if an unix domain socket was
7171 used in a "proxy_pass" directive; the bug had appeared in 0.3.47.
7172
7173 *) Bugfix: SSI did work with memcached and nonbuffered responses.
7174
7175 *) Workaround: of the Sun Studio PAUSE hardware capability bug.
7176
7177
7178 Changes with nginx 0.4.2 14 Sep 2006
7179
7180 *) Bugfix: the O_NOATIME flag support on Linux was canceled; the bug had
7181 appeared in 0.4.1.
7182
7183
7184 Changes with nginx 0.4.1 14 Sep 2006
7185
7186 *) Bugfix: the DragonFlyBSD compatibility.
7187 Thanks to Pavel Nazarov.
7188
7189 *) Workaround: of bug in 64-bit Linux sendfile(), when file is more than
7190 2G.
7191
7192 *) Feature: now on Linux nginx uses O_NOATIME flag for static requests.
7193 Thanks to Yusuf Goolamabbas.
7194
7195
7196 Changes with nginx 0.4.0 30 Aug 2006
7197
7198 *) Change in internal API: the HTTP modules initialization was moved
7199 from the init module phase to the HTTP postconfiguration phase.
7200
7201 *) Change: now the request body is not read beforehand for the
7202 ngx_http_perl_module: it's required to start the reading using the
7203 $r->has_request_body method.
7204
7205 *) Feature: the ngx_http_perl_module supports the DECLINED return code.
7206
7207 *) Feature: the ngx_http_dav_module supports the incoming "Date" header
7208 line for the PUT method.
7209
7210 *) Feature: the "ssi" directive is available inside the "if" block.
7211
7212 *) Bugfix: a segmentation fault occurred if there was an "index"
7213 directive with variables and the first index name was without
7214 variables; the bug had appeared in 0.1.29.
7215
7216
7217 Changes with nginx 0.3.61 28 Aug 2006
7218
7219 *) Change: now the "tcp_nodelay" directive is turned on by default.
7220
7221 *) Feature: the "msie_refresh" directive.
7222
7223 *) Feature: the "recursive_error_pages" directive.
7224
7225 *) Bugfix: the "rewrite" directive returned incorrect redirect, if the
7226 redirect had the captured escaped symbols from original URI.
7227
7228
7229 Changes with nginx 0.3.60 18 Aug 2006
7230
7231 *) Bugfix: a worker process may got caught in an endless loop while an
7232 error redirection; the bug had appeared in 0.3.59.
7233
7234
7235 Changes with nginx 0.3.59 16 Aug 2006
7236
7237 *) Feature: now is possible to do several redirection using the
7238 "error_page" directive.
7239
7240 *) Bugfix: the "dav_access" directive did not support three parameters.
7241
7242 *) Bugfix: the "error_page" directive did not changes the "Content-Type"
7243 header line after the "X-Accel-Redirect" was used; the bug had
7244 appeared in 0.3.58.
7245
7246
7247 Changes with nginx 0.3.58 14 Aug 2006
7248
7249 *) Feature: the "error_page" directive supports the variables.
7250
7251 *) Change: now the procfs interface instead of sysctl is used on Linux.
7252
7253 *) Change: now the "Content-Type" header line is inherited from first
7254 response when the "X-Accel-Redirect" was used.
7255
7256 *) Bugfix: the "error_page" directive did not redirect the 413 error.
7257
7258 *) Bugfix: the trailing "?" did not remove old arguments if no new
7259 arguments were added to a rewritten URI.
7260
7261 *) Bugfix: nginx could not run on 64-bit FreeBSD 7.0-CURRENT.
7262
7263
7264 Changes with nginx 0.3.57 09 Aug 2006
7265
7266 *) Feature: the $ssl_client_serial variable.
7267
7268 *) Bugfix: in the "!-e" operator of the "if" directive.
7269 Thanks to Andrian Budanstov.
7270
7271 *) Bugfix: while a client certificate verification nginx did not send to
7272 a client the required certificates information.
7273
7274 *) Bugfix: the $document_root variable did not support the variables in
7275 the "root" directive.
7276
7277
7278 Changes with nginx 0.3.56 04 Aug 2006
7279
7280 *) Feature: the "dav_access" directive.
7281
7282 *) Feature: the "if" directive supports the "-d", "!-d", "-e", "!-e",
7283 "-x", and "!-x" operators.
7284
7285 *) Bugfix: a segmentation fault occurred if a request returned a
7286 redirect and some sent to client header lines were logged in the
7287 access log.
7288
7289
7290 Changes with nginx 0.3.55 28 Jul 2006
7291
7292 *) Feature: the "stub" parameter in the "include" SSI command.
7293
7294 *) Feature: the "block" SSI command.
7295
7296 *) Feature: the unicode2nginx script was added to contrib.
7297
7298 *) Bugfix: if a "root" was specified by variable only, then the root was
7299 relative to a server prefix.
7300
7301 *) Bugfix: if the request contained "//" or "/./" and escaped symbols
7302 after them, then the proxied request was sent unescaped.
7303
7304 *) Bugfix: the $r->header_in("Cookie") of the ngx_http_perl_module now
7305 returns all "Cookie" header lines.
7306
7307 *) Bugfix: a segmentation fault occurred if
7308 "client_body_in_file_only on" was used and nginx switched to a next
7309 upstream.
7310
7311 *) Bugfix: on some condition while reconfiguration character codes
7312 inside the "charset_map" may be treated invalid; the bug had appeared
7313 in 0.3.50.
7314
7315
7316 Changes with nginx 0.3.54 11 Jul 2006
7317
7318 *) Feature: nginx now logs the subrequest information to the error log.
7319
7320 *) Feature: the "proxy_next_upstream", "fastcgi_next_upstream", and
7321 "memcached_next_upstream" directives support the "off" parameter.
7322
7323 *) Feature: the "debug_connection" directive supports the CIDR address
7324 form.
7325
7326 *) Bugfix: if a response of proxied server or FastCGI server was
7327 converted from UTF-8 or back, then it may be transferred incomplete.
7328
7329 *) Bugfix: the $upstream_response_time variable had the time of the
7330 first request to a backend only.
7331
7332 *) Bugfix: nginx could not be built on amd64 platform; the bug had
7333 appeared in 0.3.53.
7334
7335
7336 Changes with nginx 0.3.53 07 Jul 2006
7337
7338 *) Change: the "add_header" directive adds the string to 204, 301, and
7339 302 responses.
7340
7341 *) Feature: the "server" directive in the "upstream" context supports
7342 the "weight" parameter.
7343
7344 *) Feature: the "server_name" directive supports the "*" wildcard.
7345
7346 *) Feature: nginx supports the request body size more than 2G.
7347
7348 *) Bugfix: if a client was successfully authorized using "satisfy_any
7349 on", then anyway the message "access forbidden by rule" was written
7350 in the log.
7351
7352 *) Bugfix: the "PUT" method may erroneously not create a file and return
7353 the 409 code.
7354
7355 *) Bugfix: if the IMAP/POP3 backend returned an error, then nginx
7356 continued proxying anyway.
7357
7358
7359 Changes with nginx 0.3.52 03 Jul 2006
7360
7361 *) Change: the ngx_http_index_module behavior for the "POST /" requests
7362 is reverted to the 0.3.40 version state: the module now does not
7363 return the 405 error.
7364
7365 *) Bugfix: the worker process may got caught in an endless loop if the
7366 limit rate was used; the bug had appeared in 0.3.37.
7367
7368 *) Bugfix: ngx_http_charset_module logged "unknown charset" alert, even
7369 if the recoding was not needed; the bug had appeared in 0.3.50.
7370
7371 *) Bugfix: if a code response of the PUT request was 409, then a
7372 temporary file was not removed.
7373
7374
7375 Changes with nginx 0.3.51 30 Jun 2006
7376
7377 *) Bugfix: the "<" symbols might disappeared some conditions in the SSI;
7378 the bug had appeared in 0.3.50.
7379
7380
7381 Changes with nginx 0.3.50 28 Jun 2006
7382
7383 *) Change: the "proxy_redirect_errors" and "fastcgi_redirect_errors"
7384 directives was renamed to the "proxy_intercept_errors" and
7385 "fastcgi_intercept_errors" directives.
7386
7387 *) Feature: the ngx_http_charset_module supports the recoding from the
7388 single byte encodings to the UTF-8 encoding and back.
7389
7390 *) Feature: the "X-Accel-Charset" response header line is supported in
7391 proxy and FastCGI mode.
7392
7393 *) Bugfix: the "\" escape symbol in the "\"" and "\'" pairs in the SSI
7394 command was removed only if the command also has the "$" symbol.
7395
7396 *) Bugfix: the "<!--" string might be added on some conditions in the
7397 SSI after inclusion.
7398
7399 *) Bugfix: if the "Content-Length: 0" header line was in response, then
7400 in nonbuffered proxying mode the client connection was not closed.
7401
7402
7403 Changes with nginx 0.3.49 31 May 2006
7404
7405 *) Bugfix: in the "set" directive.
7406
7407 *) Bugfix: if two or more FastCGI subrequests was in SSI, then first
7408 subrequest output was included instead of second and following
7409 subrequests.
7410
7411
7412 Changes with nginx 0.3.48 29 May 2006
7413
7414 *) Change: now the ngx_http_charset_module works for subrequests, if the
7415 response has no "Content-Type" header line.
7416
7417 *) Bugfix: if the "proxy_pass" directive has no URI part, then the
7418 "proxy_redirect default" directive add the unnecessary slash in start
7419 of the rewritten redirect.
7420
7421 *) Bugfix: the internal redirect always transform client's HTTP method
7422 to GET, now the transformation is made for the "X-Accel-Redirect"
7423 redirects only and if the method is not HEAD; the bug had appeared in
7424 0.3.42.
7425
7426 *) Bugfix: the ngx_http_perl_module could not be built, if the perl was
7427 built with the threads support; the bug had appeared in 0.3.46.
7428
7429
7430 Changes with nginx 0.3.47 23 May 2006
7431
7432 *) Feature: the "upstream" directive.
7433
7434 *) Change: now the "\" escape symbol in the "\"" and "\'" pairs in the
7435 SSI command is always removed.
7436
7437
7438 Changes with nginx 0.3.46 11 May 2006
7439
7440 *) Feature: the "proxy_hide_header", "proxy_pass_header",
7441 "fastcgi_hide_header", and "fastcgi_pass_header" directives.
7442
7443 *) Change: the "proxy_pass_x_powered_by", "fastcgi_x_powered_by", and
7444 "proxy_pass_server" directives were canceled.
7445
7446 *) Feature: the "X-Accel-Buffering" response header line is supported in
7447 proxy mode.
7448
7449 *) Bugfix: the reconfiguration bug and memory leaks in the
7450 ngx_http_perl_module.
7451
7452
7453 Changes with nginx 0.3.45 06 May 2006
7454
7455 *) Feature: the "ssl_verify_client", "ssl_verify_depth", and
7456 "ssl_client_certificate" directives.
7457
7458 *) Change: the $request_method variable now returns the main request
7459 method.
7460
7461 *) Change: the &deg; symbol codes were changed in koi-win conversion
7462 table.
7463
7464 *) Feature: the euro and N symbols were added to koi-win conversion
7465 table.
7466
7467 *) Bugfix: if nginx distributed the requests among several backends and
7468 some backend failed, then requests intended for this backend was
7469 directed to one live backend only instead of being distributed among
7470 the rest.
7471
7472
7473 Changes with nginx 0.3.44 04 May 2006
7474
7475 *) Feature: the "wait" parameter in the "include" SSI command.
7476
7477 *) Feature: the Ukrainian and Byelorussian characters were added to
7478 koi-win conversion table.
7479
7480 *) Bugfix: in the SSI.
7481
7482
7483 Changes with nginx 0.3.43 26 Apr 2006
7484
7485 *) Bugfix: in the SSI.
7486
7487
7488 Changes with nginx 0.3.42 26 Apr 2006
7489
7490 *) Feature: the "bind" option of the "listen" directive in IMAP/POP3
7491 proxy.
7492
7493 *) Bugfix: if the same capture in the "rewrite" directive was used more
7494 then once.
7495
7496 *) Bugfix: the $sent_http_content_type, $sent_http_content_length,
7497 $sent_http_last_modified, $sent_http_connection,
7498 $sent_http_keep_alive, and $sent_http_transfer_encoding variables
7499 were not written to access log.
7500
7501 *) Bugfix: the $sent_http_cache_control returned value of the single
7502 "Cache-Control" response header line.
7503
7504
7505 Changes with nginx 0.3.41 21 Apr 2006
7506
7507 *) Feature: the -v switch.
7508
7509 *) Bugfix: the segmentation fault may occurred if the SSI page has
7510 remote subrequests.
7511
7512 *) Bugfix: in FastCGI handling.
7513
7514 *) Bugfix: if the perl modules path was not set using
7515 --with-perl_modules_path=PATH or the "perl_modules", then the
7516 segmentation fault was occurred.
7517
7518
7519 Changes with nginx 0.3.40 19 Apr 2006
7520
7521 *) Feature: the ngx_http_dav_module supports the MKCOL method.
7522
7523 *) Feature: the "create_full_put_path" directive.
7524
7525 *) Feature: the "$limit_rate" variable.
7526
7527
7528 Changes with nginx 0.3.39 17 Apr 2006
7529
7530 *) Feature: the "uninitialized_variable_warn" directive; the logging
7531 level of the "uninitialized variable" message was lowered from
7532 "alert" to "warn".
7533
7534 *) Feature: the "override_charset" directive.
7535
7536 *) Change: now if the unknown variable is used in the "echo" and "if
7537 expr='$name'" SSI-commands, then the "unknown variable" message is
7538 not logged.
7539
7540 *) Bugfix: the active connection counter increased on the exceeding of
7541 the connection limit specified by the "worker_connections" directive;
7542 the bug had appeared in 0.2.0.
7543
7544 *) Bugfix: the limit rate might not work on some condition; the bug had
7545 appeared in 0.3.38.
7546
7547
7548 Changes with nginx 0.3.38 14 Apr 2006
7549
7550 *) Feature: the ngx_http_dav_module.
7551
7552 *) Change: the ngx_http_perl_module optimizations.
7553 Thanks to Sergey Skvortsov.
7554
7555 *) Feature: the ngx_http_perl_module supports the $r->request_body_file
7556 method.
7557
7558 *) Feature: the "client_body_in_file_only" directive.
7559
7560 *) Workaround: now on disk overflow nginx tries to write access logs
7561 once a second only.
7562 Thanks to Anton Yuzhaninov and Maxim Dounin.
7563
7564 *) Bugfix: now the "limit_rate" directive more precisely limits rate if
7565 rate is more than 100 Kbyte/s.
7566 Thanks to ForJest.
7567
7568 *) Bugfix: now the IMAP/POP3 proxy escapes the "\r" and "\n" symbols in
7569 login and password to pass authorization server.
7570 Thanks to Maxim Dounin.
7571
7572
7573 Changes with nginx 0.3.37 07 Apr 2006
7574
7575 *) Feature: the "limit_except" directive.
7576
7577 *) Feature: the "if" directive supports the "!~", "!~*", "-f", and "!-f"
7578 operators.
7579
7580 *) Feature: the ngx_http_perl_module supports the $r->request_body
7581 method.
7582
7583 *) Bugfix: in the ngx_http_addition_filter_module.
7584
7585
7586 Changes with nginx 0.3.36 05 Apr 2006
7587
7588 *) Feature: the ngx_http_addition_filter_module.
7589
7590 *) Feature: the "proxy_pass" and "fastcgi_pass" directives may be used
7591 inside the "if" block.
7592
7593 *) Feature: the "proxy_ignore_client_abort" and
7594 "fastcgi_ignore_client_abort" directives.
7595
7596 *) Feature: the "$request_completion" variable.
7597
7598 *) Feature: the ngx_http_perl_module supports the $r->request_method and
7599 $r->remote_addr.
7600
7601 *) Feature: the ngx_http_ssi_module supports the "elif" command.
7602
7603 *) Bugfix: the "\/" string in the expression of the "if" command of the
7604 ngx_http_ssi_module was treated incorrectly.
7605
7606 *) Bugfix: in the regular expressions in the "if" command of the
7607 ngx_http_ssi_module.
7608
7609 *) Bugfix: if the relative path was specified in the
7610 "client_body_temp_path", "proxy_temp_path", "fastcgi_temp_path", and
7611 "perl_modules" directives, then the directory was used relatively to
7612 a current path but not to a server prefix.
7613
7614
7615 Changes with nginx 0.3.35 22 Mar 2006
7616
7617 *) Bugfix: the accept-filter and the TCP_DEFER_ACCEPT option were set
7618 for first "listen" directive only; the bug had appeared in 0.3.31.
7619
7620 *) Bugfix: in the "proxy_pass" directive without the URI part in a
7621 subrequest.
7622
7623
7624 Changes with nginx 0.3.34 21 Mar 2006
7625
7626 *) Feature: the "add_header" directive supports the variables.
7627
7628
7629 Changes with nginx 0.3.33 15 Mar 2006
7630
7631 *) Feature: the "http_503" parameter of the "proxy_next_upstream" or
7632 "fastcgi_next_upstream" directives.
7633
7634 *) Bugfix: ngx_http_perl_module did not work with inlined in the
7635 configuration code, if it was not started with the "sub" word.
7636
7637 *) Bugfix: in the "post_action" directive.
7638
7639
7640 Changes with nginx 0.3.32 11 Mar 2006
7641
7642 *) Bugfix: the debug logging on startup and reconfiguration time was
7643 removed; the bug had appeared in 0.3.31.
7644
7645
7646 Changes with nginx 0.3.31 10 Mar 2006
7647
7648 *) Change: now nginx passes the malformed proxied backend responses.
7649
7650 *) Feature: the "listen" directives support the address in the "*:port"
7651 form.
7652
7653 *) Feature: the EVFILER_TIMER support in MacOSX 10.4.
7654
7655 *) Workaround: for MacOSX 64-bit kernel kqueue millisecond timeout bug.
7656 Thanks to Andrei Nigmatulin.
7657
7658 *) Bugfix: if there were several "listen" directives listening one
7659 various addresses inside one server, then server names like
7660 "*.domain.tld" worked for first address only; the bug had appeared in
7661 0.3.18.
7662
7663 *) Bugfix: if the HTTPS protocol was used in the "proxy_pass" directive
7664 and the request body was in temporary file then the request was not
7665 transferred.
7666
7667 *) Bugfix: perl 5.8.8 compatibility.
7668
7669
7670 Changes with nginx 0.3.30 22 Feb 2006
7671
7672 *) Change: the ECONNABORTED error log level was changed to "error" from
7673 "crit".
7674
7675 *) Bugfix: the ngx_http_perl_module could not be build without the
7676 ngx_http_ssi_filter_module.
7677
7678 *) Bugfix: nginx could not be built on i386 platform, if the PIC was
7679 used; the bug had appeared in 0.3.27.
7680
7681
7682 Changes with nginx 0.3.29 20 Feb 2006
7683
7684 *) Feature: now nginx uses less memory, if PHP in FastCGI mode sends
7685 many warnings before the response.
7686
7687 *) Bugfix: the "Transfer-Encoding: chunked" header line was issued in
7688 the 204 responses for the HTTP/1.1 requests.
7689
7690 *) Bugfix: nginx returned the 502 response, if the complete response
7691 header lines were transferred in a separate FastCGI records.
7692
7693 *) Bugfix: if the proxied URI was specified in the "post_action"
7694 directive, then it ran only after a successful completion of a
7695 request.
7696
7697
7698 Changes with nginx 0.3.28 16 Feb 2006
7699
7700 *) Feature: the "restrict_host_names" directive was canceled.
7701
7702 *) Feature: the --with-cpu-opt=ppc64 configuration parameter.
7703
7704 *) Bugfix: on some condition the proxied connection with a client was
7705 terminated prematurely.
7706 Thanks to Vladimir Shutoff.
7707
7708 *) Bugfix: the "X-Accel-Limit-Rate" header line was not taken into
7709 account if the request was redirected using the "X-Accel-Redirect"
7710 header line.
7711
7712 *) Bugfix: the "post_action" directive ran only after a successful
7713 completion of a request.
7714
7715 *) Bugfix: the proxied response body generated by the "post_action"
7716 directive was transferred to a client.
7717
7718
7719 Changes with nginx 0.3.27 08 Feb 2006
7720
7721 *) Change: the "variables_hash_max_size" and
7722 "variables_hash_bucket_size" directives.
7723
7724 *) Feature: the $body_bytes_sent variable can be used not only in the
7725 "log_format" directive.
7726
7727 *) Feature: the $ssl_protocol and $ssl_cipher variables.
7728
7729 *) Feature: the cache line size detection for widespread CPUs at start
7730 time.
7731
7732 *) Feature: now the "accept_mutex" directive is supported using fcntl(2)
7733 on platforms different from i386, amd64, sparc64, and ppc.
7734
7735 *) Feature: the "lock_file" directive and the --with-lock-path=PATH
7736 autoconfiguration directive.
7737
7738 *) Bugfix: if the HTTPS protocol was used in the "proxy_pass" directive
7739 then the requests with the body was not transferred.
7740
7741
7742 Changes with nginx 0.3.26 03 Feb 2006
7743
7744 *) Change: the "optimize_host_names" directive was renamed to the
7745 "optimize_server_names".
7746
7747 *) Bugfix: if in the "proxy_pass" directive was no the URI part, then
7748 the main request URI was transferred to a backend while proxying the
7749 SSI subrequest.
7750
7751
7752 Changes with nginx 0.3.25 01 Feb 2006
7753
7754 *) Bugfix: the segmentation fault was occurred on start or while
7755 reconfiguration if there was invalid configuration; the bug had
7756 appeared in 0.3.24.
7757
7758
7759 Changes with nginx 0.3.24 01 Feb 2006
7760
7761 *) Workaround: for bug in FreeBSD kqueue.
7762
7763 *) Bugfix: now a response generated by the "post_action" directive is
7764 not transferred to a client.
7765
7766 *) Bugfix: the memory leaks were occurring if many log files were used.
7767
7768 *) Bugfix: the first "proxy_redirect" directive was working inside one
7769 location.
7770
7771 *) Bugfix: on 64-bit platforms segmentation fault may occurred on start
7772 if the many names were used in the "server_name" directives; the bug
7773 had appeared in 0.3.18.
7774
7775
7776 Changes with nginx 0.3.23 24 Jan 2006
7777
7778 *) Feature: the "optimize_host_names" directive.
7779
7780 *) Bugfix: in using of the variables in the "path" and "alias"
7781 directives.
7782
7783 *) Bugfix: the ngx_http_perl_module was incorrectly built on Linux and
7784 Solaris.
7785
7786
7787 Changes with nginx 0.3.22 17 Jan 2006
7788
7789 *) Feature: the ngx_http_perl_module supports the $r->args and
7790 $r->unescape methods.
7791
7792 *) Feature: the method $r->query_string of ngx_http_perl_module was
7793 canceled.
7794
7795 *) Bugfix: segmentation fault was occurred if the "none" or "blocked"
7796 values was specified in the "valid_referers" directive; the bug had
7797 appeared in 0.3.18.
7798
7799
7800 Changes with nginx 0.3.21 16 Jan 2006
7801
7802 *) Feature: the ngx_http_perl_module.
7803
7804 *) Change: the "valid_referers" directive allows the referrers without
7805 URI part.
7806
7807
7808 Changes with nginx 0.3.20 11 Jan 2006
7809
7810 *) Bugfix: in SSI handling.
7811
7812 *) Bugfix: the ngx_http_memcached_module did not support the keys in the
7813 "/usr?args" form.
7814
7815
7816 Changes with nginx 0.3.19 28 Dec 2005
7817
7818 *) Feature: the "path" and "alias" directives support the variables.
7819
7820 *) Change: now the "valid_referers" directive again checks the URI part.
7821
7822 *) Bugfix: in SSI handling.
7823
7824
7825 Changes with nginx 0.3.18 26 Dec 2005
7826
7827 *) Feature: the "server_names" directive supports the ".domain.tld"
7828 names.
7829
7830 *) Feature: the "server_names" directive uses the hash for the
7831 "*.domain.tld" names and more effective hash for usual names.
7832
7833 *) Change: the "server_names_hash_max_size" and
7834 "server_names_hash_bucket_size" directives.
7835
7836 *) Change: the "server_names_hash" and "server_names_hash_threshold"
7837 directives were canceled.
7838
7839 *) Feature: the "valid_referers" directive uses the hash site names.
7840
7841 *) Change: now the "valid_referers" directive checks the site names only
7842 without the URI part.
7843
7844 *) Bugfix: some ".domain.tld" names incorrectly processed by the
7845 ngx_http_map_module.
7846
7847 *) Bugfix: segmentation fault was occurred if configuration file did not
7848 exist; the bug had appeared in 0.3.12.
7849
7850 *) Bugfix: on 64-bit platforms segmentation fault may occurred on start;
7851 the bug had appeared in 0.3.16.
7852
7853
7854 Changes with nginx 0.3.17 18 Dec 2005
7855
7856 *) Change: now on Linux configure checks the presence of epoll and
7857 sendfile64() in kernel.
7858
7859 *) Feature: the "map" directive supports domain names in the
7860 ".domain.tld" form.
7861
7862 *) Bugfix: the timeouts were not used in SSL handshake; the bug had
7863 appeared in 0.2.4.
7864
7865 *) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
7866
7867 *) Bugfix: when the HTTPS protocol was used in the "proxy_pass"
7868 directive the port 80 was used by default.
7869
7870
7871 Changes with nginx 0.3.16 16 Dec 2005
7872
7873 *) Feature: the ngx_http_map_module.
7874
7875 *) Feature: the "types_hash_max_size" and "types_hash_bucket_size"
7876 directives.
7877
7878 *) Feature: the "ssi_value_length" directive.
7879
7880 *) Feature: the "worker_rlimit_core" directive.
7881
7882 *) Workaround: the connection number in logs was always 1 if nginx was
7883 built by the icc 8.1 or 9.0 compilers with optimization for
7884 Pentium 4.
7885
7886 *) Bugfix: the "config timefmt" SSI command set incorrect time format.
7887
7888 *) Bugfix: nginx did not close connection to IMAP/POP3 backend for the
7889 SSL connections; the bug had appeared in 0.3.13.
7890 Thanks to Rob Mueller.
7891
7892 *) Bugfix: segmentation fault may occurred in at SSL shutdown; the bug
7893 had appeared in 0.3.13.
7894
7895
7896 Changes with nginx 0.3.15 07 Dec 2005
7897
7898 *) Feature: the new 444 code of the "return" directive to close
7899 connection.
7900
7901 *) Feature: the "so_keepalive" directive in IMAP/POP3 proxy.
7902
7903 *) Bugfix: if there are unclosed connection nginx now calls abort() only
7904 on graceful quit and active "debug_points" directive.
7905
7906
7907 Changes with nginx 0.3.14 05 Dec 2005
7908
7909 *) Bugfix: in the 304 response the body was transferred; the bug had
7910 appeared in 0.3.13.
7911
7912
7913 Changes with nginx 0.3.13 05 Dec 2005
7914
7915 *) Feature: the IMAP/POP3 proxy supports STARTTLS and STLS.
7916
7917 *) Bugfix: the IMAP/POP3 proxy did not work with the select, poll, and
7918 /dev/poll methods.
7919
7920 *) Bugfix: in SSI handling.
7921
7922 *) Bugfix: now Solaris sendfilev() is not used to transfer the client
7923 request body to FastCGI-server via the unix domain socket.
7924
7925 *) Bugfix: the "auth_basic" directive did not disable the authorization;
7926 the bug had appeared in 0.3.11.
7927
7928
7929 Changes with nginx 0.3.12 26 Nov 2005
7930
7931 *) Security: if nginx was built with the ngx_http_realip_module and the
7932 "satisfy_any on" directive was used, then access and authorization
7933 directives did not work. The ngx_http_realip_module was not built and
7934 is not built by default.
7935
7936 *) Change: the "$time_gmt" variable name was changed to "$time_local".
7937
7938 *) Change: the "proxy_header_buffer_size" and
7939 "fastcgi_header_buffer_size" directives was renamed to the
7940 "proxy_buffer_size" and "fastcgi_buffer_size" directives.
7941
7942 *) Feature: the ngx_http_memcached_module.
7943
7944 *) Feature: the "proxy_buffering" directive.
7945
7946 *) Bugfix: the changes in accept mutex handling when the "rtsig" method
7947 was used; the bug had appeared in 0.3.0.
7948
7949 *) Bugfix: if the client sent the "Transfer-Encoding: chunked" header
7950 line, then nginx returns the 411 error.
7951
7952 *) Bugfix: if the "auth_basic" directive was inherited from the http
7953 level, then the realm in the "WWW-Authenticate" header line was
7954 without the "Basic realm" text.
7955
7956 *) Bugfix: if the "combined" format was explicitly specified in the
7957 "access_log" directive, then the empty lines was written to the log;
7958 the bug had appeared in 0.3.8.
7959
7960 *) Bugfix: nginx did not run on the sparc platform under any OS except
7961 Solaris.
7962
7963 *) Bugfix: now it is not necessary to place space between the quoted
7964 string and closing bracket in the "if" directive.
7965
7966
7967 Changes with nginx 0.3.11 15 Nov 2005
7968
7969 *) Bugfix: nginx did not pass the client request headers and body while
7970 proxying; the bug had appeared in 0.3.10.
7971
7972
7973 Changes with nginx 0.3.10 15 Nov 2005
7974
7975 *) Change: the "valid_referers" directive and the "$invalid_referer"
7976 variable were moved to the new ngx_http_referer_module from the
7977 ngx_http_rewrite_module.
7978
7979 *) Change: the "$apache_bytes_sent" variable name was changed to
7980 "$body_bytes_sent".
7981
7982 *) Feature: the "$sent_http_..." variables.
7983
7984 *) Feature: the "if" directive supports the "=" and "!=" operations.
7985
7986 *) Feature: the "proxy_pass" directive supports the HTTPS protocol.
7987
7988 *) Feature: the "proxy_set_body" directive.
7989
7990 *) Feature: the "post_action" directive.
7991
7992 *) Feature: the ngx_http_empty_gif_module.
7993
7994 *) Feature: the "worker_cpu_affinity" directive for Linux.
7995
7996 *) Bugfix: the "rewrite" directive did not unescape URI part in
7997 redirect, now it is unescaped except the %00-%25 and %7F-%FF
7998 characters.
7999
8000 *) Bugfix: nginx could not be built by the icc 9.0 compiler.
8001
8002 *) Bugfix: if the SSI was enabled for zero size static file, then the
8003 chunked response was encoded incorrectly.
8004
8005
8006 Changes with nginx 0.3.9 10 Nov 2005
8007
8008 *) Bugfix: nginx considered URI as unsafe if two any symbols was between
8009 two slashes; the bug had appeared in 0.3.8.
8010
8011
8012 Changes with nginx 0.3.8 09 Nov 2005
8013
8014 *) Security: nginx now checks URI got from a backend in
8015 "X-Accel-Redirect" header line or in SSI file for the "/../" paths
8016 and zeroes.
8017
8018 *) Change: nginx now does not treat the empty user name in the
8019 "Authorization" header line as valid one.
8020
8021 *) Feature: the "ssl_session_timeout" directives of the
8022 ngx_http_ssl_module and ngx_imap_ssl_module.
8023
8024 *) Feature: the "auth_http_header" directive of the
8025 ngx_imap_auth_http_module.
8026
8027 *) Feature: the "add_header" directive.
8028
8029 *) Feature: the ngx_http_realip_module.
8030
8031 *) Feature: the new variables to use in the "log_format" directive:
8032 $bytes_sent, $apache_bytes_sent, $status, $time_gmt, $uri,
8033 $request_time, $request_length, $upstream_status,
8034 $upstream_response_time, $gzip_ratio, $uid_got, $uid_set,
8035 $connection, $pipe, and $msec. The parameters in the "%name" form
8036 will be canceled soon.
8037
8038 *) Change: now the false variable values in the "if" directive are the
8039 empty string "" and string starting with "0".
8040
8041 *) Bugfix: while using proxied or FastCGI-server nginx may leave
8042 connections and temporary files with client requests in open state.
8043
8044 *) Bugfix: the worker processes did not flush the buffered logs on
8045 graceful exit.
8046
8047 *) Bugfix: if the request URI was changes by the "rewrite" directive and
8048 the request was proxied in location given by regular expression, then
8049 the incorrect request was transferred to backend; the bug had
8050 appeared in 0.2.6.
8051
8052 *) Bugfix: the "expires" directive did not remove the previous "Expires"
8053 header.
8054
8055 *) Bugfix: nginx may stop to accept requests if the "rtsig" method and
8056 several worker processes were used.
8057
8058 *) Bugfix: the "\"" and "\'" escape symbols were incorrectly handled in
8059 SSI commands.
8060
8061 *) Bugfix: if the response was ended just after the SSI command and
8062 gzipping was used, then the response did not transferred complete or
8063 did not transferred at all.
8064
8065
8066 Changes with nginx 0.3.7 27 Oct 2005
8067
8068 *) Feature: the "access_log" supports the "buffer=" parameter.
8069
8070 *) Bugfix: nginx could not be built on platforms different from i386,
8071 amd64, sparc, and ppc; the bug had appeared in 0.3.2.
8072
8073
8074 Changes with nginx 0.3.6 24 Oct 2005
8075
8076 *) Change: now the IMAP/POP3 proxy do not send the empty login to
8077 authorization server.
8078
8079 *) Feature: the "log_format" supports the variables in the $name form.
8080
8081 *) Bugfix: if at least in one server was no the "listen" directive, then
8082 nginx did not listen on the 80 port; the bug had appeared in 0.3.3.
8083
8084 *) Bugfix: if the URI part is omitted in "proxy_pass" directive, the 80
8085 port was always used.
8086
8087
8088 Changes with nginx 0.3.5 21 Oct 2005
8089
8090 *) Bugfix: the segmentation fault may occurred if the IMAP/POP3 login
8091 was changed by authorization server; the bug had appeared in 0.2.2.
8092
8093 *) Bugfix: the accept mutex did not work and all connections were
8094 handled by one process; the bug had appeared in 0.3.3.
8095
8096 *) Bugfix: the timeout did not work if the "rtsig" method and the
8097 "timer_resolution" directive were used.
8098
8099
8100 Changes with nginx 0.3.4 19 Oct 2005
8101
8102 *) Bugfix: nginx could not be built on Linux 2.4+ and MacOS X; the bug
8103 had appeared in 0.3.3.
8104
8105
8106 Changes with nginx 0.3.3 19 Oct 2005
8107
8108 *) Change: the "bl" and "af" parameters of the "listen" directive was
8109 renamed to the "backlog" and "accept_filter".
8110
8111 *) Feature: the "rcvbuf" and "sndbuf" parameters of the "listen"
8112 directive.
8113
8114 *) Change: the "$msec" log parameter does not require now the additional
8115 the gettimeofday() system call.
8116
8117 *) Feature: the -t switch now tests the "listen" directives.
8118
8119 *) Bugfix: if the invalid address was specified in the "listen"
8120 directive, then after the -HUP signal nginx left an open socket in
8121 the CLOSED state.
8122
8123 *) Bugfix: the mime type may be incorrectly set to default value for
8124 index file with variable in the name; the bug had appeared in 0.3.0.
8125
8126 *) Feature: the "timer_resolution" directive.
8127
8128 *) Feature: the millisecond "$upstream_response_time" log parameter.
8129
8130 *) Bugfix: a temporary file with client request body now is removed just
8131 after the response header was transferred to a client.
8132
8133 *) Bugfix: OpenSSL 0.9.6 compatibility.
8134
8135 *) Bugfix: the SSL certificate and key file paths could not be relative.
8136
8137 *) Bugfix: the "ssl_prefer_server_ciphers" directive did not work in the
8138 ngx_imap_ssl_module.
8139
8140 *) Bugfix: the "ssl_protocols" directive allowed to specify the single
8141 protocol only.
8142
8143
8144 Changes with nginx 0.3.2 12 Oct 2005
8145
8146 *) Feature: the Sun Studio 10 C compiler support.
8147
8148 *) Feature: the "proxy_upstream_max_fails",
8149 "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails", and
8150 "fastcgi_upstream_fail_timeout" directives.
8151
8152
8153 Changes with nginx 0.3.1 10 Oct 2005
8154
8155 *) Bugfix: the segmentation fault occurred when the signal queue
8156 overflowed if the "rtsig" method was used; the bug had appeared in
8157 0.2.0.
8158
8159 *) Change: correct handling of the "\\", "\"", "\'", and "\$" pairs in
8160 SSI.
8161
8162
8163 Changes with nginx 0.3.0 07 Oct 2005
8164
8165 *) Change: the 10-days live time limit of worker process was eliminated.
8166 The limit was introduced because of millisecond timers overflow.
8167
8168
8169 Changes with nginx 0.2.6 05 Oct 2005
8170
8171 *) Change: while using load-balancing the time before the failed backend
8172 retry was decreased from 60 to 10 seconds.
8173
8174 *) Change: the "proxy_pass_unparsed_uri" was canceled, the original URI
8175 now passed, if the URI part is omitted in "proxy_pass" directive.
8176
8177 *) Feature: the "error_page" directive supports redirects and allows
8178 more flexible to change an error code.
8179
8180 *) Change: the charset in the "Content-Type" header line now is ignored
8181 in proxied subrequests.
8182
8183 *) Bugfix: if the URI was changed in the "if" block and request did not
8184 found new configuration, then the ngx_http_rewrite_module rules ran
8185 again.
8186
8187 *) Bugfix: if the "set" directive set the ngx_http_geo_module variable
8188 in some configuration part, the this variable was not available in
8189 other configuration parts and the "using uninitialized variable"
8190 error was occurred; the bug had appeared in 0.2.2.
8191
8192
8193 Changes with nginx 0.2.5 04 Oct 2005
8194
8195 *) Change: the duplicate value of the ngx_http_geo_module variable now
8196 causes the warning and changes old value.
8197
8198 *) Feature: the ngx_http_ssi_module supports the "set" command.
8199
8200 *) Feature: the ngx_http_ssi_module supports the "file" parameter in the
8201 "include" command.
8202
8203 *) Feature: the ngx_http_ssi_module supports the variable value
8204 substitutions in expressions of the "if" command.
8205
8206
8207 Changes with nginx 0.2.4 03 Oct 2005
8208
8209 *) Feature: the ngx_http_ssi_module supports "$var=text", "$var!=text",
8210 "$var=/text/", and "$var!=/text/" expressions in the "if" command.
8211
8212 *) Bugfix: in proxying location without trailing slash; the bug had
8213 appeared in 0.1.44.
8214
8215 *) Bugfix: the segmentation fault may occurred if the "rtsig" method was
8216 used; the bug had appeared in 0.2.0.
8217
8218
8219 Changes with nginx 0.2.3 30 Sep 2005
8220
8221 *) Bugfix: nginx could not be built without the --with-debug option; the
8222 bug had appeared in 0.2.2.
8223
8224
8225 Changes with nginx 0.2.2 30 Sep 2005
8226
8227 *) Feature: the "config errmsg" command of the ngx_http_ssi_module.
8228
8229 *) Change: the ngx_http_geo_module variables can be overridden by the
8230 "set" directive.
8231
8232 *) Feature: the "ssl_protocols" and "ssl_prefer_server_ciphers"
8233 directives of the ngx_http_ssl_module and ngx_imap_ssl_module.
8234
8235 *) Bugfix: the ngx_http_autoindex_module did not show correctly the long
8236 file names;
8237
8238 *) Bugfix: the ngx_http_autoindex_module now do not show the files
8239 starting by dot.
8240
8241 *) Bugfix: if the SSL handshake failed then another connection may be
8242 closed too.
8243 Thanks to Rob Mueller.
8244
8245 *) Bugfix: the export versions of MSIE 5.x could not connect via HTTPS.
8246
8247
8248 Changes with nginx 0.2.1 23 Sep 2005
8249
8250 *) Bugfix: if all backend using in load-balancing failed after one
8251 error, then nginx may got caught in an endless loop; the bug had
8252 appeared in 0.2.0.
8253
8254
8255 Changes with nginx 0.2.0 23 Sep 2005
8256
8257 *) The pid-file names used during online upgrade was changed and now is
8258 not required a manual rename operation. The old master process adds
8259 the ".oldbin" suffix to its pid-file and executes a new binary file.
8260 The new master process creates usual pid-file without the ".newbin"
8261 suffix. If the master process exits, then old master process renames
8262 back its pid-file with the ".oldbin" suffix to the pid-file without
8263 suffix.
8264
8265 *) Change: the "worker_connections" directive, new name of the
8266 "connections" directive; now the directive specifies maximum number
8267 of connections, but not maximum socket descriptor number.
8268
8269 *) Feature: SSL supports the session cache inside one worker process.
8270
8271 *) Feature: the "satisfy_any" directive.
8272
8273 *) Change: the ngx_http_access_module and ngx_http_auth_basic_module do
8274 not run for subrequests.
8275
8276 *) Feature: the "worker_rlimit_nofile" and "worker_rlimit_sigpending"
8277 directives.
8278
8279 *) Bugfix: if all backend using in load-balancing failed after one
8280 error, then nginx did not try do connect to them during 60 seconds.
8281
8282 *) Bugfix: in IMAP/POP3 command argument parsing.
8283 Thanks to Rob Mueller.
8284
8285 *) Bugfix: errors while using SSL in IMAP/POP3 proxy.
8286
8287 *) Bugfix: errors while using SSI and gzipping.
8288
8289 *) Bugfix: the "Expires" and "Cache-Control" header lines were omitted
8290 from the 304 responses.
8291 Thanks to Alexandr Kukushkin.
8292
8293
8294 Changes with nginx 0.1.45 08 Sep 2005
8295
8296 *) Change: the "ssl_engine" directive was canceled in the
8297 ngx_http_ssl_module and now is introduced at global level.
8298
8299 *) Bugfix: the responses with SSI subrequests did not transferred via
8300 SSL connection.
8301
8302 *) Various bug fixes in the IMAP/POP3 proxy.
8303
8304
8305 Changes with nginx 0.1.44 06 Sep 2005
8306
8307 *) Feature: the IMAP/POP3 proxy supports SSL.
8308
8309 *) Feature: the "proxy_timeout" directive of the ngx_imap_proxy_module.
8310
8311 *) Feature: the "userid_mark" directive.
8312
8313 *) Feature: the $remote_user variable value is determined independently
8314 of authorization use.
8315
8316
8317 Changes with nginx 0.1.43 30 Aug 2005
8318
8319 *) Feature: the listen(2) backlog in the "listen" directive can be
8320 changed using the -HUP signal.
8321
8322 *) Feature: the geo2nginx.pl script was added to contrib.
8323
8324 *) Change: the FastCGI parameters with the empty values now are passed
8325 to a server.
8326
8327 *) Bugfix: the segmentation fault occurred or the worker process may got
8328 caught in an endless loop if the proxied or FastCGI server sent the
8329 "Cache-Control" header line and the "expires" directive was used; in
8330 the proxied mode the bug had appeared in 0.1.29.
8331
8332
8333 Changes with nginx 0.1.42 23 Aug 2005
8334
8335 *) Bugfix: if the request URI had a zero length after the processing in
8336 the ngx_http_proxy_module, then the segmentation fault or bus error
8337 occurred in the ngx_http_proxy_module.
8338
8339 *) Bugfix: the "limit_rate" directive did not work inside the "if"
8340 block; the bug had appeared in 0.1.38.
8341
8342
8343 Changes with nginx 0.1.41 25 Jul 2005
8344
8345 *) Bugfix: if the variable was used in the configuration file, then it
8346 can not be used in SSI.
8347
8348
8349 Changes with nginx 0.1.40 22 Jul 2005
8350
8351 *) Bugfix: if a client sent too long header line, then the request
8352 information did not logged in the error log.
8353
8354 *) Bugfix: the "Set-Cookie" header line was not transferred when the
8355 "X-Accel-Redirect" was used; the bug had appeared in 0.1.39.
8356
8357 *) Bugfix: the "Content-Disposition" header line was not transferred
8358 when the "X-Accel-Redirect" was used.
8359
8360 *) Bugfix: the master process did not close the listen socket on the
8361 SIGQUIT signal.
8362
8363 *) Bugfix: after on-line upgrade on Linux and Solaris the process name
8364 became shorter in the "ps" command.
8365
8366
8367 Changes with nginx 0.1.39 14 Jul 2005
8368
8369 *) The changes in the ngx_http_charset_module: the "default_charset"
8370 directive was canceled; the "charset" directive sets the response
8371 charset; the "source_charset" directive sets the source charset only.
8372
8373 *) Bugfix: the backend "WWW-Authenticate" header line did not
8374 transferred while the 401 response code redirecting.
8375
8376 *) Bugfix: the ngx_http_proxy_module and ngx_http_fastcgi_module may
8377 close a connection before anything was transferred to a client; the
8378 bug had appeared in 0.1.38.
8379
8380 *) Workaround: the Linux glibc crypt_r() initialization bug.
8381
8382 *) Bugfix: the ngx_http_ssi_module did not support the relative URI in
8383 the "include virtual" command.
8384
8385 *) Bugfix: if the backend response had the "Location" header line and
8386 nginx should not rewrite this line, then the 500 code response body
8387 was transferred; the bug had appeared in 0.1.29.
8388
8389 *) Bugfix: some directives of the ngx_http_proxy_module and
8390 ngx_http_fastcgi_module were not inherited from the server to the
8391 location level; the bug had appeared in 0.1.29.
8392
8393 *) Bugfix: the ngx_http_ssl_module did not support the certificate
8394 chain.
8395
8396 *) Bugfix: the ngx_http_autoindex_module did not show correctly the long
8397 file names; the bug had appeared in 0.1.38.
8398
8399 *) Bugfixes in IMAP/POP3 proxy in interaction with a backend at the
8400 login state.
8401
8402
8403 Changes with nginx 0.1.38 08 Jul 2005
8404
8405 *) Feature: the "limit_rate" directive is supported in proxy and FastCGI
8406 mode.
8407
8408 *) Feature: the "X-Accel-Limit-Rate" response header line is supported
8409 in proxy and FastCGI mode.
8410
8411 *) Feature: the "break" directive.
8412
8413 *) Feature: the "log_not_found" directive.
8414
8415 *) Bugfix: the response status code was not changed when request was
8416 redirected by the ""X-Accel-Redirect" header line.
8417
8418 *) Bugfix: the variables set by the "set" directive could not be used in
8419 SSI.
8420
8421 *) Bugfix: the segmentation fault may occurred if the SSI page has more
8422 than one remote subrequest.
8423
8424 *) Bugfix: nginx treated the backend response as invalid if the status
8425 line in the header was transferred in two packets; the bug had
8426 appeared in 0.1.29.
8427
8428 *) Feature: the "ssi_types" directive.
8429
8430 *) Feature: the "autoindex_exact_size" directive.
8431
8432 *) Bugfix: the ngx_http_autoindex_module did not support the long file
8433 names in UTF-8.
8434
8435 *) Feature: the IMAP/POP3 proxy.
8436
8437
8438 Changes with nginx 0.1.37 23 Jun 2005
8439
8440 *) Change: now the "\n" is added to the end of the "nginx.pid" file.
8441
8442 *) Bugfix: the responses may be transferred not completely, if many
8443 parts or the big parts were included by SSI.
8444
8445 *) Bugfix: if all backends had returned the 404 response and the
8446 "http_404" parameter of the "proxy_next_upstream" or
8447 "fastcgi_next_upstream" directives was used, then nginx started to
8448 request all backends again.
8449
8450
8451 Changes with nginx 0.1.36 15 Jun 2005
8452
8453 *) Change: if the request header has duplicate the "Host", "Connection",
8454 "Content-Length", or "Authorization" lines, then nginx now returns
8455 the 400 error.
8456
8457 *) Change: the "post_accept_timeout" directive was canceled.
8458
8459 *) Feature: the "default", "af=", "bl=", "deferred", and "bind"
8460 parameters of the "listen" directive.
8461
8462 *) Feature: the FreeBSD accept filters support.
8463
8464 *) Feature: the Linux TCP_DEFER_ACCEPT support.
8465
8466 *) Bugfix: the ngx_http_autoindex_module did not support the file names
8467 in UTF-8.
8468
8469 *) Bugfix: the new log file can be rotated by the -USR1 signal only if
8470 the reconfiguration by the -HUP signal was made twice.
8471
8472
8473 Changes with nginx 0.1.35 07 Jun 2005
8474
8475 *) Feature: the "working_directory" directive.
8476
8477 *) Feature: the "port_in_redirect" directive.
8478
8479 *) Bugfix: the segmentation fault was occurred if the backend response
8480 header was in several packets; the bug had appeared in 0.1.29.
8481
8482 *) Bugfix: if more than 10 servers were configured or some server did
8483 not use the "listen" directive, then the segmentation fault was
8484 occurred on the start.
8485
8486 *) Bugfix: the segmentation fault might occur if the response was bigger
8487 than the temporary file.
8488
8489 *) Bugfix: nginx returned the 400 response on requests like
8490 "GET http://www.domain.com/uri HTTP/1.0"; the bug had appeared in
8491 0.1.28.
8492
8493
8494 Changes with nginx 0.1.34 26 May 2005
8495
8496 *) Bugfix: the worker process may got caught in an endless loop if the
8497 big response part were include by SSI.
8498
8499 *) Bugfix: the variables set by the "set" directive were not available
8500 in SSI.
8501
8502 *) Feature: the "autoindex_localtime" directive.
8503
8504 *) Bugfix: the empty value of the "proxy_set_header" directive forbids
8505 the client request header line passing.
8506
8507
8508 Changes with nginx 0.1.33 23 May 2005
8509
8510 *) Bugfix: nginx could not be built with the --without-pcre parameter;
8511 the bug had appeared in 0.1.29.
8512
8513 *) Bugfix: 3, 4, 7, and 8 the "proxy_set_header" directives in one level
8514 cause the bus fault on start up.
8515
8516 *) Bugfix: the HTTP protocol was specified in the HTTPS redirects.
8517
8518 *) Bugfix: if the "rewrite" directive used the captures inside the "if"
8519 directive, then the 500 error code was returned.
8520
8521
8522 Changes with nginx 0.1.32 19 May 2005
8523
8524 *) Bugfix: the arguments were omitted in the redirects, issued by the
8525 "rewrite" directive; the bug had appeared in 0.1.29.
8526
8527 *) Feature: the "if" directive supports the captures in regular
8528 expressions.
8529
8530 *) Feature: the "set" directive supports the variables and the captures
8531 of regular expressions.
8532
8533 *) Feature: the "X-Accel-Redirect" response header line is supported in
8534 proxy and FastCGI mode.
8535
8536
8537 Changes with nginx 0.1.31 16 May 2005
8538
8539 *) Bugfix: the response encrypted by SSL may not transferred complete.
8540
8541 *) Bugfix: errors while processing FastCGI response by SSI.
8542
8543 *) Bugfix: errors while using SSI and gzipping.
8544
8545 *) Bugfix: the redirect with the 301 code was transferred without
8546 response body; the bug had appeared in 0.1.30.
8547
8548
8549 Changes with nginx 0.1.30 14 May 2005
8550
8551 *) Bugfix: the worker process may got caught in an endless loop if the
8552 SSI was used.
8553
8554 *) Bugfix: the response encrypted by SSL may not transferred complete.
8555
8556 *) Bugfix: if the length of the response part received at once from
8557 proxied or FastCGI server was equal to 500, then nginx returns the
8558 500 response code; in proxy mode the bug had appeared in 0.1.29 only.
8559
8560 *) Bugfix: nginx did not consider the directives with 8 or 9 parameters
8561 as invalid.
8562
8563 *) Feature: the "return" directive can return the 204 response code.
8564
8565 *) Feature: the "ignore_invalid_headers" directive.
8566
8567
8568 Changes with nginx 0.1.29 12 May 2005
8569
8570 *) Feature: the ngx_http_ssi_module supports "include virtual" command.
8571
8572 *) Feature: the ngx_http_ssi_module supports the condition command like
8573 'if expr="$NAME"' and "else" and "endif" commands. Only one nested
8574 level is supported.
8575
8576 *) Feature: the ngx_http_ssi_module supports the DATE_LOCAL and DATE_GMT
8577 variables and "config timefmt" command.
8578
8579 *) Feature: the "ssi_ignore_recycled_buffers" directive.
8580
8581 *) Bugfix: the "echo" command did not show the default value for the
8582 empty QUERY_STRING variable.
8583
8584 *) Change: the ngx_http_proxy_module was rewritten.
8585
8586 *) Feature: the "proxy_redirect", "proxy_pass_request_headers",
8587 "proxy_pass_request_body", and "proxy_method" directives.
8588
8589 *) Feature: the "proxy_set_header" directive. The "proxy_x_var" was
8590 canceled and must be replaced with the proxy_set_header directive.
8591
8592 *) Change: the "proxy_preserve_host" is canceled and must be replaced
8593 with the "proxy_set_header Host $host" and the "proxy_redirect off"
8594 directives, the "proxy_set_header Host $host:$proxy_port" directive
8595 and the appropriate proxy_redirect directives.
8596
8597 *) Change: the "proxy_set_x_real_ip" is canceled and must be replaced
8598 with the "proxy_set_header X-Real-IP $remote_addr" directive.
8599
8600 *) Change: the "proxy_add_x_forwarded_for" is canceled and must be
8601 replaced with
8602 the "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for"
8603 directive.
8604
8605 *) Change: the "proxy_set_x_url" is canceled and must be replaced with
8606 the "proxy_set_header X-URL http://$host:$server_port$request_uri"
8607 directive.
8608
8609 *) Feature: the "fastcgi_param" directive.
8610
8611 *) Change: the "fastcgi_root", "fastcgi_set_var" and "fastcgi_params"
8612 directive are canceled and must be replaced with the fastcgi_param
8613 directives.
8614
8615 *) Feature: the "index" directive can use the variables.
8616
8617 *) Feature: the "index" directive can be used at http and server levels.
8618
8619 *) Change: the last index only in the "index" directive can be absolute.
8620
8621 *) Feature: the "rewrite" directive can use the variables.
8622
8623 *) Feature: the "internal" directive.
8624
8625 *) Feature: the CONTENT_LENGTH, CONTENT_TYPE, REMOTE_PORT, SERVER_ADDR,
8626 SERVER_PORT, SERVER_PROTOCOL, DOCUMENT_ROOT, SERVER_NAME,
8627 REQUEST_METHOD, REQUEST_URI, and REMOTE_USER variables.
8628
8629 *) Change: nginx now passes the invalid lines in a client request
8630 headers or a backend response header.
8631
8632 *) Bugfix: if the backend did not transfer response for a long time and
8633 the "send_timeout" was less than "proxy_read_timeout", then nginx
8634 returned the 408 response.
8635
8636 *) Bugfix: the segmentation fault was occurred if the backend sent an
8637 invalid line in response header; the bug had appeared in 0.1.26.
8638
8639 *) Bugfix: the segmentation fault may occurred in FastCGI fault
8640 tolerance configuration.
8641
8642 *) Bugfix: the "expires" directive did not remove the previous "Expires"
8643 and "Cache-Control" headers.
8644
8645 *) Bugfix: nginx did not take into account trailing dot in "Host" header
8646 line.
8647
8648 *) Bugfix: the ngx_http_auth_module did not work under Linux.
8649
8650 *) Bugfix: the rewrite directive worked incorrectly, if the arguments
8651 were in a request.
8652
8653 *) Bugfix: nginx could not be built on MacOS X.
8654
8655
8656 Changes with nginx 0.1.28 08 Apr 2005
8657
8658 *) Bugfix: nginx hogs CPU while proxying the huge files.
8659
8660 *) Bugfix: nginx could not be built by gcc 4.0 on Linux.
8661
8662
8663 Changes with nginx 0.1.27 28 Mar 2005
8664
8665 *) Feature: the "blocked" parameter of the "valid_referers" directive.
8666
8667 *) Change: the errors while handling the request header now logged at
8668 "info" level. The server name and the "Host" and "Referer" header
8669 lines also logged.
8670
8671 *) Change: the "Host" header line is also logged in error log.
8672
8673 *) Feature: the proxy_pass_unparsed_uri directive. The special handling
8674 of the "://" symbols in URI, appeared in 0.1.11 version, now is
8675 canceled.
8676
8677 *) Bugfix: nginx could not be built on FreeBSD and Linux, if the
8678 --without-ngx_http_auth_basic_module configuration parameter was
8679 used.
8680
8681
8682 Changes with nginx 0.1.26 22 Mar 2005
8683
8684 *) Change: the invalid client header lines are now ignored and logged at
8685 the info level.
8686
8687 *) Change: the server name is also logged in error log.
8688
8689 *) Feature: the ngx_http_auth_basic_module module and the auth_basic and
8690 auth_basic_user_file directives.
8691
8692
8693 Changes with nginx 0.1.25 19 Mar 2005
8694
8695 *) Bugfix: nginx did run on Linux parisc.
8696
8697 *) Feature: nginx now does not start under FreeBSD if the sysctl
8698 kern.ipc.somaxconn value is too big.
8699
8700 *) Bugfix: if a request was internally redirected by the
8701 ngx_http_index_module module to the ngx_http_proxy_module or
8702 ngx_http_fastcgi_module modules, then the index file was not closed
8703 after request completion.
8704
8705 *) Feature: the "proxy_pass" can be used in location with regular
8706 expression.
8707
8708 *) Feature: the ngx_http_rewrite_filter_module module supports the
8709 condition like "if ($HTTP_USER_AGENT ~ MSIE)".
8710
8711 *) Bugfix: nginx started too slow if the large number of addresses and
8712 text values were used in the "geo" directive.
8713
8714 *) Change: a variable name must be declared as "$name" in the "geo"
8715 directive. The previous variant without "$" is still supported, but
8716 will be removed soon.
8717
8718 *) Feature: the "%{VARIABLE}v" logging parameter.
8719
8720 *) Feature: the "set $name value" directive.
8721
8722 *) Bugfix: gcc 4.0 compatibility.
8723
8724 *) Feature: the --with-openssl-opt=OPTIONS autoconfiguration directive.
8725
8726
8727 Changes with nginx 0.1.24 04 Mar 2005
8728
8729 *) Feature: the ngx_http_ssi_filter_module supports the QUERY_STRING and
8730 DOCUMENT_URI variables.
8731
8732 *) Bugfix: the ngx_http_autoindex_module may some times return the 404
8733 response for existent directory, if this directory was used in
8734 "alias" directive.
8735
8736 *) Bugfix: the ngx_http_ssi_filter_module ran incorrectly for large
8737 responses.
8738
8739 *) Bugfix: the lack of the "Referer" header line was always accounted as
8740 valid referrer.
8741
8742
8743 Changes with nginx 0.1.23 01 Mar 2005
8744
8745 *) Feature: the ngx_http_ssi_filter_module and the ssi,
8746 ssi_silent_errors, and ssi_min_file_chunk directives. The 'echo
8747 var="HTTP_..." default=""' and 'echo var="REMOTE_ADDR"' commands are
8748 supported.
8749
8750 *) Feature: the %request_time log parameter.
8751
8752 *) Feature: if the request has no the "Host" header line, then the
8753 "proxy_preserve_host" directive set this header line to the first
8754 server name of the "server_name" directive.
8755
8756 *) Bugfix: nginx could not be built on platforms different from i386,
8757 amd64, sparc, and ppc; the bug had appeared in 0.1.22.
8758
8759 *) Bugfix: the ngx_http_autoindex_module now shows the information not
8760 about the symlink, but about file or directory it points to.
8761
8762 *) Bugfix: the %apache_length parameter logged the negative length of
8763 the response header if the no response was transferred to a client.
8764
8765
8766 Changes with nginx 0.1.22 22 Feb 2005
8767
8768 *) Bugfix: the ngx_http_stub_status_module showed incorrect handled
8769 connections statistics if the proxying or FastCGI server were used.
8770
8771 *) Bugfix: the installation paths were incorrectly quoted on Linux and
8772 Solaris; the bug had appeared in 0.1.21.
8773
8774
8775 Changes with nginx 0.1.21 22 Feb 2005
8776
8777 *) Bugfix: the ngx_http_stub_status_module showed incorrect statistics
8778 if "rtsig" method was used or if several worker process ran on SMP.
8779
8780 *) Bugfix: nginx could not be built by the icc compiler on Linux or if
8781 the zlib-1.2.x library was building from sources.
8782
8783 *) Bugfix: nginx could not be built on NetBSD 2.0.
8784
8785
8786 Changes with nginx 0.1.20 17 Feb 2005
8787
8788 *) Feature: the new "script_filename" and "remote_port" parameters of
8789 the fastcgi_params directive.
8790
8791 *) Bugfix: the FastCGI stderr stream was handled incorrectly.
8792
8793
8794 Changes with nginx 0.1.19 16 Feb 2005
8795
8796 *) Bugfix: now, if request contains the zero, then the 404 error is
8797 returned for the local requests.
8798
8799 *) Bugfix: nginx could not be built on NetBSD 2.0.
8800
8801 *) Bugfix: the timeout may occur while reading of the client request
8802 body via SSL connections.
8803
8804
8805 Changes with nginx 0.1.18 09 Feb 2005
8806
8807 *) Workaround: the default values of the devpoll_events and the
8808 devpoll_changes directives changed from 512 to 32 to be compatible
8809 with Solaris 10.
8810
8811 *) Bugfix: the proxy_set_x_var and fastcgi_set_var directives were not
8812 inherited.
8813
8814 *) Bugfix: in a redirect rewrite directive arguments were concatenated
8815 with URI by an "&" rather than a "?".
8816
8817 *) Bugfix: the lines without trailing ";" in the file being included by
8818 the ngx_http_geo_module were silently ignored.
8819
8820 *) Feature: the ngx_http_stub_status_module.
8821
8822 *) Bugfix: the unknown log format in the access_log directive caused the
8823 segmentation fault.
8824
8825 *) Feature: the new "document_root" parameter of the fastcgi_params
8826 directive.
8827
8828 *) Feature: the fastcgi_redirect_errors directive.
8829
8830 *) Feature: the new "break" modifier of the "rewrite" directive allows
8831 to stop the rewrite/location cycle and sets the current configuration
8832 to the request.
8833
8834
8835 Changes with nginx 0.1.17 03 Feb 2005
8836
8837 *) Change: the ngx_http_rewrite_module was rewritten from the scratch.
8838 Now it is possible to redirect, to return the error codes, to check
8839 the variables and referrers. The directives can be used inside
8840 locations. The redirect directive was canceled.
8841
8842 *) Feature: the ngx_http_geo_module.
8843
8844 *) Feature: the proxy_set_x_var and fastcgi_set_var directives.
8845
8846 *) Bugfix: the location configuration with "=" modifier may be used in
8847 another location.
8848
8849 *) Bugfix: the correct content type was set only for requests that use
8850 small caps letters in extension.
8851
8852 *) Bugfix: if the proxy_pass or fastcgi_pass directives were set in the
8853 location, and access was denied, and the error was redirected to a
8854 static page, then the segmentation fault occurred.
8855
8856 *) Bugfix: if in a proxied "Location" header was a relative URL, then a
8857 host name and a slash were added to them; the bug had appeared in
8858 0.1.14.
8859
8860 *) Bugfix: the system error message was not logged on Linux.
8861
8862
8863 Changes with nginx 0.1.16 25 Jan 2005
8864
8865 *) Bugfix: if the response were transferred by chunks, then on the HEAD
8866 request the final chunk was issued.
8867
8868 *) Bugfix: the "Connection: keep-alive" header were issued, even if the
8869 keepalive_timeout directive forbade the keep-alive use.
8870
8871 *) Bugfix: the errors in the ngx_http_fastcgi_module caused the
8872 segmentation faults.
8873
8874 *) Bugfix: the compressed response encrypted by SSL may not transferred
8875 complete.
8876
8877 *) Bugfix: the TCP-specific TCP_NODELAY, TCP_NOPUSH, and TCP_CORK
8878 options, are not used for the unix domain sockets.
8879
8880 *) Feature: the rewrite directive supports the arguments rewriting.
8881
8882 *) Bugfix: the response code 400 was returned for the POST request with
8883 the "Content-Length: 0" header; the bug had appeared in 0.1.14.
8884
8885
8886 Changes with nginx 0.1.15 19 Jan 2005
8887
8888 *) Bugfix: the error while the connecting to the FastCGI server caused
8889 segmentation fault.
8890
8891 *) Bugfix: the correct handling of the regular expression, that has
8892 different number of the captures and substitutions.
8893
8894 *) Feature: the location, that is passed to the FastCGI server, can be
8895 regular expression.
8896
8897 *) Bugfix: the FastCGI's parameter REQUEST_URI is now passed with the
8898 arguments and in the original state.
8899
8900 *) Bugfix: the ngx_http_rewrite_module module was required to be built
8901 to use the regular expressions in locations.
8902
8903 *) Bugfix: the directive "proxy_preserve_host on" adds port 80 to the
8904 "Host" headers, if upstream listen on port 80; the bug had appeared
8905 in 0.1.14.
8906
8907 *) Bugfix: the same paths in autoconfiguration parameters
8908 --http-client-body-temp-path=PATH and --http-proxy-temp-path=PATH, or
8909 --http-client-body-temp-path=PATH and --http-fastcgi-temp-path=PATH
8910 caused segmentation fault.
8911
8912
8913 Changes with nginx 0.1.14 18 Jan 2005
8914
8915 *) Feature: the autoconfiguration directives:
8916 --http-client-body-temp-path=PATH, --http-proxy-temp-path=PATH, and
8917 --http-fastcgi-temp-path=PATH
8918
8919 *) Change: the directory name for the temporary files with the client
8920 request body is specified by directive client_body_temp_path, by
8921 default it is <prefix>/client_body_temp.
8922
8923 *) Feature: the ngx_http_fastcgi_module and the directives:
8924 fastcgi_pass, fastcgi_root, fastcgi_index, fastcgi_params,
8925 fastcgi_connect_timeout, fastcgi_send_timeout, fastcgi_read_timeout,
8926 fastcgi_send_lowat, fastcgi_header_buffer_size, fastcgi_buffers,
8927 fastcgi_busy_buffers_size, fastcgi_temp_path,
8928 fastcgi_max_temp_file_size, fastcgi_temp_file_write_size,
8929 fastcgi_next_upstream, and fastcgi_x_powered_by.
8930
8931 *) Bugfix: the "[alert] zero size buf" error; the bug had appeared in
8932 0.1.3.
8933
8934 *) Change: the URI must be specified after the host name in the
8935 proxy_pass directive.
8936
8937 *) Change: the %3F symbol in the URI was considered as the argument
8938 string start.
8939
8940 *) Feature: the unix domain sockets support in the
8941 ngx_http_proxy_module.
8942
8943 *) Feature: the ssl_engine and ssl_ciphers directives.
8944 Thanks to Sergey Skvortsov for SSL-accelerator.
8945
8946
8947 Changes with nginx 0.1.13 21 Dec 2004
8948
8949 *) Feature: the server_names_hash and server_names_hash_threshold
8950 directives.
8951
8952 *) Bugfix: the *.domain.tld names in the "server_name" directive did not
8953 work.
8954
8955 *) Bugfix: the %request_length log parameter logged the incorrect
8956 length.
8957
8958
8959 Changes with nginx 0.1.12 06 Dec 2004
8960
8961 *) Feature: the %request_length log parameter.
8962
8963 *) Bugfix: when using the /dev/poll, select and poll on the platforms,
8964 where these methods may do the false reports, there may be the long
8965 delay when the request was passed via the keep-alive connection. It
8966 may be at least on Solaris when using the /dev/poll.
8967
8968 *) Bugfix: the send_lowat directive is ignored on Linux because Linux
8969 does not support the SO_SNDLOWAT option.
8970
8971
8972 Changes with nginx 0.1.11 02 Dec 2004
8973
8974 *) Feature: the worker_priority directive.
8975
8976 *) Change: both tcp_nopush and tcp_nodelay directives affect the
8977 transferred response.
8978
8979 *) Bugfix: nginx did not call initgroups().
8980 Thanks to Andrew Sitnikov and Andrei Nigmatulin.
8981
8982 *) Change: now the ngx_http_autoindex_module shows the file size in the
8983 bytes.
8984
8985 *) Bugfix: the ngx_http_autoindex_module returned the 500 error if the
8986 broken symlink was in a directory.
8987
8988 *) Bugfix: the files bigger than 4G could not be transferred using
8989 sendfile.
8990
8991 *) Bugfix: if the backend was resolved to several backends and there was
8992 an error while the response waiting then process may got caught in an
8993 endless loop.
8994
8995 *) Bugfix: the worker process may exit with the "unknown cycle" message
8996 when the /dev/poll method was used.
8997
8998 *) Bugfix: "close() channel failed" errors.
8999
9000 *) Bugfix: the autodetection of the "nobody" and "nogroup" groups.
9001
9002 *) Bugfix: the send_lowat directive did not work on Linux.
9003
9004 *) Bugfix: the segmentation fault occurred if there was no events
9005 section in configuration.
9006
9007 *) Bugfix: nginx could not be built on OpenBSD.
9008
9009 *) Bugfix: the double slashes in "://" in the URI were converted to
9010 ":/".
9011
9012
9013 Changes with nginx 0.1.10 26 Nov 2004
9014
9015 *) Bugfix: if the request without arguments contains "//", "/./", "/../"
9016 or "%XX" then the last character in the request line was lost; the
9017 bug had appeared in 0.1.9.
9018
9019 *) Bugfix: the fix in 0.1.9 for the files bigger than 2G on Linux did
9020 not work.
9021
9022
9023 Changes with nginx 0.1.9 25 Nov 2004
9024
9025 *) Bugfix: the proxied request was sent without arguments if the request
9026 contains "//", "/./", "/../" or "%XX".
9027
9028 *) Bugfix: the large compressed responses may be transferred not
9029 completely.
9030
9031 *) Bugfix: the files bigger than 2G was not transferred on Linux that
9032 does not support sendfile64().
9033
9034 *) Bugfix: while the build configuration on Linux the --with-poll_module
9035 parameter was required; the bug had appeared in 0.1.8.
9036
9037
9038 Changes with nginx 0.1.8 20 Nov 2004
9039
9040 *) Bugfix: in the ngx_http_autoindex_module if the long file names were
9041 in the listing.
9042
9043 *) Feature: the "^~" modifier in the location directive.
9044
9045 *) Feature: the proxy_max_temp_file_size directive.
9046
9047
9048 Changes with nginx 0.1.7 12 Nov 2004
9049
9050 *) Bugfix: on FreeBSD the segmentation fault may occur if the size of
9051 the transferred file was changed; the bug had appeared in 0.1.5.
9052
9053
9054 Changes with nginx 0.1.6 11 Nov 2004
9055
9056 *) Bugfix: some location directive combinations with the regular
9057 expressions caused the wrong configuration choose.
9058
9059
9060 Changes with nginx 0.1.5 11 Nov 2004
9061
9062 *) Bugfix: on Solaris and Linux there may be too many "recvmsg()
9063 returned not enough data" alerts.
9064
9065 *) Bugfix: there were the "writev() failed (22: Invalid argument)"
9066 errors on Solaris in proxy mode without sendfile. On other platforms
9067 that do not support sendfile at all the process got caught in an
9068 endless loop.
9069
9070 *) Bugfix: segmentation fault on Solaris in proxy mode and using
9071 sendfile.
9072
9073 *) Bugfix: segmentation fault on Solaris.
9074
9075 *) Bugfix: on-line upgrade did not work on Linux.
9076
9077 *) Bugfix: the ngx_http_autoindex_module module did not escape the
9078 spaces, the quotes, and the percent signs in the directory listing.
9079
9080 *) Change: the decrease of the copy operations.
9081
9082 *) Feature: the userid_p3p directive.
9083
9084
9085 Changes with nginx 0.1.4 26 Oct 2004
9086
9087 *) Bugfix: in the ngx_http_autoindex_module.
9088
9089
9090 Changes with nginx 0.1.3 25 Oct 2004
9091
9092 *) Feature: the ngx_http_autoindex_module and the autoindex directive.
9093
9094 *) Feature: the proxy_set_x_url directive.
9095
9096 *) Bugfix: proxy module may get caught in an endless loop when sendfile
9097 is not used.
9098
9099
9100 Changes with nginx 0.1.2 21 Oct 2004
9101
9102 *) Feature: the --user=USER, --group=GROUP, and --with-ld-opt=OPTIONS
9103 options in configure.
9104
9105 *) Feature: the server_name directive supports *.domain.tld.
9106
9107 *) Bugfix: the portability improvements.
9108
9109 *) Bugfix: if configuration file was set in command line, the
9110 reconfiguration was impossible; the bug had appeared in 0.1.1.
9111
9112 *) Bugfix: proxy module may get caught in an endless loop when sendfile
9113 is not used.
9114
9115 *) Bugfix: with sendfile the response was not recoded according to the
9116 charset module directives; the bug had appeared in 0.1.1.
9117
9118 *) Bugfix: very seldom bug in the kqueue processing.
9119
9120 *) Bugfix: the gzip module compressed the proxied responses that was
9121 already compressed.
9122
9123
9124 Changes with nginx 0.1.1 11 Oct 2004
9125
9126 *) Feature: the gzip_types directive.
9127
9128 *) Feature: the tcp_nodelay directive.
9129
9130 *) Feature: the send_lowat directive is working not only on OSes that
9131 support kqueue NOTE_LOWAT, but also on OSes that support SO_SNDLOWAT.
9132
9133 *) Feature: the setproctitle() emulation for Linux and Solaris.
9134
9135 *) Bugfix: the "Location" header rewrite bug fixed while the proxying.
9136
9137 *) Bugfix: the ngx_http_chunked_module module may get caught in an
9138 endless loop.
9139
9140 *) Bugfix: the /dev/poll module bugs fixed.
9141
9142 *) Bugfix: the responses were corrupted when the temporary files were
9143 used while the proxying.
9144
9145 *) Bugfix: the unescaped requests were passed to the backend.
9146
9147 *) Bugfix: while the build configuration on Linux 2.4 the
9148 --with-poll_module parameter was required.
9149
9150
9151 Changes with nginx 0.1.0 04 Oct 2004
9152
9153 *) The first public version.
9154