# changelog

author: Andrei Belov <defan@nginx.com> - 16-2.amzn2.ngx
changelog:
  - Bugfix: in the ngx_http_v2_module.
  - Bugfix: in the ngx_http_grpc_module.
  - Bugfix: in the ngx_http_mp4_module.
  - Bugfix: in the ngx_http_hls_module.


author: Andrei Belov <defan@nginx.com> - 17-1.amzn2.ngx
changelog:
  - Feature: the "ssl_early_data" directive used to enable TLS v1.3 0-RTT
    data.
    The "$ssl_early_data" variable introduced to protect against replay
    attacks at the application layer.
  - Feature: the "delay" parameter of the "limit_req" directive.
  - Feature: the "auth_jwt_key_request" directive used to retrieve JWK file
    from a subrequest.
  - Feature: the "Ed25519" and "Ed448" cryptographic algorithms introduced in
    JWT authorization module.
  - Feature: the "proxy_socket_keepalive", "fastcgi_socket_keepalive",
    "grpc_socket_keepalive", "memcached_socket_keepalive",
    "scgi_socket_keepalive", and "uwsgi_socket_keepalive" directives.
  - Feature: the "keepalive_timeout" and "keepalive_requests" directives in
    the "upstream" block.
  - Feature: the "proxy_requests" directive in stream module.
  - Bugfix: in the $upstream_connect_time, $upstream_header_time,
    $upstream_queue_time, $upstream_response_time variables.
  - Change: the logging level of the "no suitable key share" and "no suitable
    signature algorithm" SSL errors has been lowered from "crit" to "info".


author: Andrei Belov <defan@nginx.com> - 18-1.amzn2.ngx
changelog:
  - Feature: variables support in the "ssl_certificate" and
    "ssl_certificate_key" directives.
  - Feature: loading of SSL certificates and secret keys from variables.
  - Feature: active health checks extended with additional logic of verifying
    arbitrary variables (the "require" parameter of the "match" directive).
  - Feature: clustering enhancement - a single zone_sync configuration can now
    be used for all instances in a cluster with the help of wildcard support
    in the "listen" directive.
  - Change: when using a hostname in the "listen" directive nginx now creates
    listening sockets for all addresses the hostname resolves to (previously,
    only the first address was used).
  - Feature: port ranges in the "listen" directive.
  - Feature: in stream proxy, added an ability to explicitly close existing
    connections to the particular upstream server after it was removed from
    the group due to health check failure, API call, or re-resolve action (the
    "proxy_session_drop" directive).
  - Feature: the $upstream_bytes_sent variable.


author: Konstantin Pavlov <thresh@nginx.com> - 18-2.amzn2.ngx
changelog:
  - Security: when using HTTP/2 a client might cause excessive memory
    consumption and CPU usage (CVE-2019-9511, CVE-2019-9513, CVE-2019-9516).


author: Andrei Belov <defan@nginx.com> - 19-1.amzn2.ngx
changelog:
  - Feature: metrics provided by the "status_zone" directive can be collected
    per location.
  - Feature: added a set of metrics related to DNS resolver functionality (the
    "status_zone" parameter of the "resolver" directive).
  - Feature: the "limit_req_dry_run" directive provides a way of testing
    request limiting configuration without actually blocking excessive
    requests.
  - Feature: key-value storage now has optimized mode for storing IP addresses
    in CIDR notation (the "type" parameter of the "keyval_zone" directive).
  - Feature: each key-value pair can now have its own custom expiration timer,
    either set at creation time for new entry, or modified for existing entry.
  - Feature: variables support in the "limit_rate" and "limit_rate_after"
    directives.
  - Feature: variables support in the "proxy_upload_rate" and
    "proxy_download_rate" directives in the stream module.
  - Feature: updated status dashboard with new visualizations for per-location
    statistic, resolver metrics, and zone sync status.


author: Andrei Belov <defan@nginx.com> - 20-1.amzn2.ngx
changelog:
  - Feature: key-value storage: support for matching a key based on a
    substring (the "type" parameter of the "keyval_zone" directive was
    extended with the "prefix" option).
  - Feature: DNS resolvers can now be specified in upstream context.
  - Feature: rate limiting: the $limit_req_status variable keeps the result of
    limiting a request processing rate. Corresponding metrics are available
    through the "/http/limit_reqs/" endpoint in the API module.
  - Feature: connection limiting: the "limit_conn_dry_run" directive. The
    $limit_conn_status variable keeps the result of limiting a number of
    connections. Correponding metrics are available through the
    "/http/limit_conns/" endpoint in the API module.
  - Feature: the $proxy_protocol_server_addr and $proxy_protocol_server_port
    variables.


author: Andrei Belov <defan@nginx.com> - 21-1.amzn2.ngx
changelog:
  - based on nginx/1.17.9 mainline version.
  - Feature: the grpc_pass directive can now contain variables.


author: Alexey Senin <asenin@nginx.com> - 22-1.amzn2.ngx
changelog:
  - based on nginx/1.19.0 mainline version.
  - Feature: client certificate validation with OCSP
  - Feature: unauthorized requests can now be delayed with the auth delay
    directive.
  - Feature: updated status dashboard with new visualizations of limit conn
    and limit req statistics.


author: Igor Ippolitov <iippolitov@nginx.com> - 23-1.amzn2.ngx
changelog:
  - based on nginx/1.19.5 mainline version.
  - Feature: the -e switch.
  - Feature: the same source files can now be specified in different modules
    while building addon modules.
  - Bugfix: SSL shutdown did not work when lingering close was used.
  - Bugfix: "upstream sent frame for closed stream" errors might occur when
    working with gRPC backends.
  - Bugfix: in request body filters internal API.


author: Igor Ippolitov <iippolitov@nginx.com> - 24-1.amzn2.ngx
changelog:
  - based on nginx/1.19.10 mainline version.
  - the default value of the "keepalive_requests" directive was changed to
    1000.
  - Feature: the "keepalive_time" directive.
  - Feature: the $connection_time variable.
  - Workaround: "gzip filter failed to use preallocated memory" alerts
    appeared in logs when using zlib-ng.


author: Alexey Senin <asenin@nginx.com> - 22+1.1.0-1.amzn2.ngx
changelog:
  - Base version updated to 1.19.0-1 (nginx-plus-r22).
  - Change: Based on commit 72c8ee0
    https://github.com/stnoonan/spnego-http-auth-nginx-module/commit/72c8ee04c
    81f929ec84d5a6d126f789b77781a8c


author: Andrei Belov <defan@nginx.com> - 16+3.0-2.amzn2.ngx
changelog:
  - Bugfix: unwanted auto-reload of MaxMind database might occur even if there
    was no "auto_reload" parameter specified in configuration.
  - Bugfix: a segmentation fault might occur in a worker process on
    auto-reloading MaxMind database.


author: Igor Ippolitov <iippolitov@nginx.com> - 23+0.10.19-1.amzn2.ngx
changelog:
  - Base version updated to 1.19.5-1 (nginx-plus-r23).
  - Lua module updated to 0.10.19
  - Lua stream module added.
  - LuaJIT update to 2.1-20201027


author: Igor Ippolitov <iippolitov@nginx.com> - 24+0.3.1-1.amzn2.ngx
changelog:
  - Base version updated to 1.19.10-1 (nginx-plus-r24).
  - Version bumped to 0.3.1. Minor README changes.


author: Alexey Senin <asenin@nginx.com> - 22+0.4.1-1.amzn2.ngx
changelog:
  - Change: njs module updated to 0.4.1.
  - Feature: added support for multi-value headers in r.headersIn.
  - Feature: introduced raw headers API.
  - Improvement: added TypedScript API description.
  - Bugfix: fixed Array.prototype.slice() for sparse arrays.


author: Alexey Senin <asenin@nginx.com> - 22+0.4.2-1.amzn2.ngx
changelog:
  - Feature: added RegExp.prototype[Symbol.replace].
  - Feature: introduced line level backtrace.
  - Feature: added %TypedArray%.prototype.sort().
  - Feature: extended "fs" module. Added mkdir(), readdir(), rmdir() and
    friends. Thanks to Artem S. Povalyukhin.
  - Improvement: parser refactoring.
  - Bugfix: fixed TypedScript API description for HTTP headers.
  - Bugfix: fixed TypedScript API description for NjsByteString type.
  - Bugfix: fixed String.prototype.repeat() according to the specification.
  - Bugfix: fixed parsing of flags for regexp literals.
  - Bugfix: fixed index generation for global objects in generator.
  - Bugfix: fixed String.prototype.replace() according to the specification.
  - Bugfix: fixed %TypedArray%.prototype.copyWithin() with nonzero byte
    offset.
  - Bugfix: fixed Array.prototype.splice() for sparse arrays.
  - Bugfix: fixed Array.prototype.reverse() for sparse arrays.
  - Bugfix: fixed Array.prototype.sort() for sparse arrays.


author: Alexey Senin <asenin@nginx.com> - 22+0.4.3-1.amzn2.ngx
changelog:
  - Feature: added Query String module.
  - Feature: improved fs.mkdir() to support recursive directory creation.
    Thanks to Artem S. Povalyukhin.
  - Feature: improved fs.rmdir() to support recursive directory removal.
    Thanks to Artem S. Povalyukhin.
  - Feature: introduced UTF-8 decoder according to WHATWG encoding spec.
  - Feature: added TextEncoder/TextDecoder implementation.
  - Bugfix: fixed parsing return statement without semicolon.
  - Bugfix: fixed njs_number_to_int32() for big-endian platforms.
  - Bugfix: fixed unit test on big-endian platforms.
  - Bugfix: fixed regexp-literals parsing with '=' characters.
  - Bugfix: fixed pre/post increment/decrement in assignment operations.


author: Alexey Senin <asenin@nginx.com> - 22+0.4.4-1.amzn2.ngx
changelog:
  - Bugfix: fixed location merge.
  - Bugfix: fixed r.httpVersion for HTTP/2.
  - Feature: added support for numeric separators (ES12).
  - Feature: added remaining methods for %TypedArray%.prototype. The following
    methods were added: every(), filter(), find(), findIndex(), forEach(),
    includes(), indexOf(), lastIndexOf(), map(), reduce(), reduceRight(),
    reverse(), some().
  - Feature: added %TypedArray% remaining methods. The following methods were
    added: from(), of().
  - Feature: added DataView object.
  - Feature: added Buffer object implementation.
  - Feature: added support for ArrayBuffer in TextDecoder.prototype.decode().
  - Feature: added support for Buffer object in "crypto" methods.
  - Feature: added support for Buffer object in "fs" methods.
  - Change: Hash.prototype.digest() and Hmac.prototype.digest() now return a
    Buffer instance instead of a byte string when encoding is not provided.
  - Change: fs.readFile() and friends now return a Buffer instance instead of
    a byte string when encoding is not provided.
  - Bugfix: fixed function "prototype" property handler while setting.
  - Bugfix: fixed function "constructor" property handler while setting.
  - Bugfix: fixed String.prototype.indexOf() for byte strings.
  - Bugfix: fixed RegExpBuiltinExec() with a global flag and byte strings.
  - Bugfix: fixed RegExp.prototype[Symbol.replace] when thereplacement value
    is a function.
  - Bugfix: fixed TextDecoder.prototype.decode() with non-zero TypedArray
    offset.


author: Alexey Senin <asenin@nginx.com> - 23+0.5.0-1.amzn2.ngx
changelog:
  - Feature: introduced global "ngx" object. The following methods were added:
    ngx.log(level, msg) The following properties were added: ngx.INFO,
    ngx.WARN, ngx.ERR.
  - Feature: added support for Buffer object where string is expected.
  - Feature: added Buffer version of existing properties. The following
    properties were added: r.requestBuffer (r.requestBody), r.responseBuffer
    (r.responseBody), r.rawVariables (r.variables), s.rawVariables
    (s.variables). The following events were added in stream module: upstream
    (upload), downstream (download).
  - Improvement: added aliases to existing properties. The following
    properties were added: r.requestText (r.requestBody), r.responseText
    (r.responseBody).
  - Improvement: throwing an exception in r.internalRedirect() for a
    subrequest.
  - Bugfix: fixed promise r.subrequest() with error_page redirect.
  - Bugfix: fixed promise events handling.
  - Feature: added TypeScript definitions for built-in modules. Thanks to
    Jakub Jirutka.
  - Feature: tracking unhandled promise rejection.
  - Feature: added initial iterator support. Thanks to Artem S. Povalyukhin.
  - Improvement: TypeScript definitions are refactored. Thanks to Jakub
    Jirutka.
  - Improvement: added forgotten support for Object.prototype.valueOf() in
    Buffer.from().
  - Bugfix: fixed heap-use-after-free in JSON.parse().
  - Bugfix: fixed heap-use-after-free in JSON.stringify().
  - Bugfix: fixed JSON.stringify() for arrays resizable via getters.
  - Bugfix: fixed heap-buffer-overflow for RegExp.prototype[Symbol.replace].
  - Bugfix: fixed returned value for Buffer.prototype.write* functions.
  - Bugfix: fixed querystring.stringify(). Thanks to Artem S. Povalyukhin.
  - Bugfix: fixed the catch handler for Promise.prototype.finally().
  - Bugfix: fixed querystring.parse().


author: Alexey Senin <asenin@nginx.com> - 23+0.5.1-1.amzn2.ngx
changelog:
  - Feature: introduced ngx.fetch() method implementing Fetch API. The
    following init options are supported: body, headers, buffer_size (nginx
    specific), max_response_body_size (nginx specific), method. The following
    properties and methods of Response object are implemented: arrayBuffer(),
    bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type,
    url. The following properties and methods of Header object are
    implemented: get(), getAll(), has(). Notable limitations: only the http://
    scheme is supported, redirects are not handled. In collaboration with 洪志道
    (Hong Zhi Dao).
  - Feature: added the "js_header_filter" directive.
  - Bugfix: fixed processing buffered data in body filter in stream module.
  - Bugfix: fixed safe mode bypass in Function constructor.
  - Bugfix: fixed Date.prototype.toISOString() with invalid date values.


author: Alexey Senin <asenin@nginx.com> - 23+0.5.2-1.amzn2.ngx
changelog:
  - Feature: added the "js_body_filter" directive.
  - Feature: introduced the "status" property for stream session object.
  - Feature: added njs.on('exit') callback support.
  - Bugfix: fixed property descriptor reuse for not extensible objects. Thanks
    to Artem S. Povalyukhin.
  - Feature: fixed Object.freeze() and friends according to the specification.
    Thanks to Artem S. Povalyukhin.
  - Feature: fixed Function() in CLI mode.
  - Feature: fixed for-in iteration of typed array values. Thanks to Artem S.
    Povalyukhin.


author: Igor Ippolitov <iippolitov@nginx.com> - 24+0.5.3-1.amzn2.ngx
changelog:
  - Base version updated to 1.19.10-1 (nginx-plus-r24).
  - Feature: Feature: added the "js_var" directive.


author: Igor Ippolitov <iippolitov@nginx.com> - 24+0.6.0-1.amzn2.ngx
changelog:
  - njs module updated to 0.6.0
  - Feature: added let and const declaration support.
  - Feature: added RegExp.prototype[Symbol.split].
  - Feature: added sticky flag support for RegExp.
  - Bugfix: fixed heap-buffer-overflow in String.prototype.lastIndexOf().
  - Bugfix: fixed RegExp.prototype.test() according to the specification.
  - Bugfix: fixed String.prototype.split() according to the specification.
  - Bugfix: fixed use-of-uninitialized-value while tracking rejected promises.
  - Bugfix: fixed njs.dump() for objects with circular references.


author: Igor Ippolitov <iippolitov@nginx.com> - 24+0.6.1-1.amzn2.ngx
changelog:
  - njs module updated to 0.6.1
  - Bugfix: fixed RegExpBuiltinExec() with UTF-8 only regexps. The bug was
    introduced in 0.4.2.
  - Bugfix: fixed parsing of export default declaration with non-assignment
    expressions. Thanks to Artem S. Povalyukhin.


author: Alexey Senin <asenin@nginx.com> - 24+0.6.2-1.amzn2.ngx
changelog:
  - njs module updated to 0.6.2
  - Bugfix: fixed CPU hog when js_filter is registered in both directions.
  - Feature: introduced AggregateError implementation.
  - Feature: added remaining Promise constructor methods. The following
    methods were added: Promise.all(), Promise.allSettled(), Promise.any(),
    Promise.race().
  - Improvement: removed recursion from code generator.
  - Bugfix: fixed rest parameter parsing without binding identifier.
  - Bugfix: fixed resolve/reject callback for Promise.prototype.finally().
  - Bugfix: fixed %TypedArray%.prototype.join() with detached buffer.
  - Bugfix: fixed memory leak in interactive shell.


author: Alexey Senin <asenin@nginx.com> - 24+0.7.0-1.amzn2.ngx
changelog:
  - njs module updated to 0.7.0
  - Feature: added HTTPS support for Fetch API.
  - Feature: added setReturnValue() method for http and stream.
  - Feature: introduced Async/Await implementation.
  - Feature: added WebCrypto API implementation.
  - Bugfix: fixed copying of closures for declared functions. The bug was
    introduced in 0.6.0.
  - Bugfix: fixed unhandled promise rejection in handle events.
  - Bugfix: fixed Response.headers getter in Fetch API.


author: Andrei Belov <defan@nginx.com> - 19+1.2.0-1.amzn2.ngx
changelog:
  - Updated to 1.2.0.
  - Feature: stream keyval support.
  - Feature: metrics for zone_sync, nginx, processes, slabs, caches.
  - Feature: an ability to disable certain metrics at particular endpoints.


author: Igor Ippolitov <iippolitov@nginx.com> - 22+1.3.1-1.amzn2.ngx
changelog:
  - Version update to 1.3.1
  - main.js removed
  - Improvement: Add worker process memory usage stats.
  - Improvement: Change usage of js_include to js_import.


