# changelog

author: Andrei Belov <defan@nginx.com> - 1.27.0-1.fc39.ngx
changelog:
  - Feature: ability to specify a custom index file name when serving static
    files.
  - Feature: variables support in the "location" option of the "return"
    action.
  - Feature: support empty strings in the "location" option of the "return"
    action.
  - Feature: added a new variable, $request_uri, that includes both the path
    and the query parts as per RFC 3986, sections 3-4.
  - Feature: Ruby Rack environment parameter "SCRIPT_NAME" support.
  - Feature: compatibility with GCC 12.
  - Bugfix: Ruby Sinatra applications don't work without custom logging.
  - Bugfix: the controller process could crash when a chain of more than four
    certificates was uploaded.
  - Bugfix: some Perl applications failed to process the request body, notably
    with Plack.
  - Bugfix: some Spring Boot applications failed to start, notably with
    Grails.
  - Bugfix: incorrect Python protocol auto detection (ASGI or WSGI) for native
    callable object, notably with Falcon.
  - Bugfix: ECMAScript modules did not work with the recent Node.js versions.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.28.0-1.fc39.ngx
changelog:
  - Change: increased the applications' startup timeout.
  - Change: disallowed abstract Unix domain socket syntax in non-Linux
    systems.
  - Feature: basic statistics API.
  - Feature: customizable access log format.
  - Feature: more HTTP variables support.
  - Feature: forwarded header to replace client address and protocol.
  - Feature: ability to get dynamic variables.
  - Feature: support for abstract Unix sockets.
  - Feature: support for Unix sockets in address matching.
  - Feature: the $dollar variable translates to a literal "$" during variable
    substitution.
  - Bugfix: router process could crash if index file didn't contain an
    extension.
  - Bugfix: force SCRIPT_NAME in Ruby to always be an empty string.
  - Bugfix: when isolated PID numbers reach the prototype process host PID,
    the prototype crashed.
  - Bugfix: the Ruby application process could crash on SIGTERM.
  - Bugfix: the Ruby application process could crash on SIGINT.
  - Bugfix: mutex leak in the C API.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.29.0-1.fc39.ngx
changelog:
  - Change: removed $uri auto-append for "share" when loading configuration.
  - Change: prefer system crypto policy instead of hardcoding a default.
  - Feature: njs support with the basic syntax of JS template literals.
  - Feature: support per-application cgroups on Linux.
  - Feature: the $request_time variable contains the request processing time.
  - Feature: "prefix" option in Python applications to set WSGI "SCRIPT_NAME"
    and ASGI root-path variables.
  - Feature: compatibility with Python 3.11.
  - Feature: compatibility with OpenSSL 3.
  - Feature: compatibility with PHP 8.2.
  - Feature: compatibility with Node.js 19.0.
  - Feature: Ruby Rack v3 support.
  - Bugfix: fix error in connection statistics when using proxy.
  - Bugfix: fix HTTP cookie parsing when the value contains an equals sign.
  - Bugfix: PHP directory URLs without a trailing '/' would give a 503 error
    (fixed with a 301 re-direct).
  - Bugfix: missing error checks in the C API.
  - Bugfix: report the regex status in configure summary.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.29.1-1.fc39.ngx
changelog:
  - Bugfix: stop creating world-writeable directories.
  - Bugfix: memory leak related to NJS.
  - Bugfix: path parsing in PHP applications.
  - Bugfix: enabled UTF-8 for Python config by default to avoid applications
    failing in some cases.
  - Bugfix: using asyncio.get_running_loop() instead of
    asyncio.get_event_loop() when it's available to prevent errors in some
    Python ASGI applications.
  - Bugfix: applications that make use of various low level APIs such as
    pthreads could fail to work correctly.
  - Bugfix: websocket endianness detection for obscure operating systems.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.30.0-1.fc39.ngx
changelog:
  - Change: remove Unix domain listen sockets upon reconfiguration.
  - Feature: basic URI rewrite support.
  - Feature: NJS loadable modules support.
  - Feature: per-application logging.
  - Feature: conditional logging of route selection.
  - Feature: support the keys API on the request objects in NJS.
  - Feature: default values for 'make install' pathnames such as prefix; this
    allows to './configure && make && sudo make install'.
  - Feature: "server_version" setting to omit the version token from "Server"
    header field.
  - Bugfix: request header field values could be corrupted in some cases; the
    bug had appeared in 1.29.0.
  - Bugfix: PHP error handling (added missing 403 and 404 errors).
  - Bugfix: Perl applications crash on second responder call.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.31.0-1.fc39.ngx
changelog:
  - Change: if building with njs, version 0.8.0 or later is now required.
  - Feature: technology preview of WebAssembly application module.
  - Feature: "response_headers" option to manage headers in the action and
    fallback.
  - Feature: HTTP response header variables.
  - Feature: ASGI lifespan state support. Thanks to synodriver.
  - Bugfix: ensure that $uri variable is not cached.
  - Bugfix: deprecated options were unavailable.
  - Bugfix: ASGI applications inaccessible over IPv6.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.31.1-1.fc39.ngx
changelog:
  - Feature: allow to set the HTTP response status in Wasm module.
  - Feature: allow uploads larger than 4GiB in Wasm module.
  - Bugfix: application process could crash while rewriting URLs with query
    strings.
  - Bugfix: requests larger than about 64MiB could cause error in Wasm module.
  - Bugfix: when using many headers in Java module some of them could be
    corrupted due to memory realocation issue.
  - Bugfix: ServerRequest.destroy() implemented in Node.js module to make it
    compatible with some frameworks that might use it.
  - Bugfix: chunk argument of ServerResponse.write() can now be a Uint8Array
    to improve compatibility with Node.js 15.0.0 and above.
  - Bugfix: Node.JS unit-http NPM module now has appropriate default paths for
    macOS/arm64 systems.
  - Bugfix: build on musl libc with clang.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.32.0-1.fc39.ngx
changelog:
  - Feature: WebAssembly Components using WASI interfaces defined in
    wasi:http/proxy@0.2.0.
  - Feature: conditional access logging.
  - Feature: NJS variables access.
  - Feature: $request_id variable contains a string that is formed using
    random data and can be used as a unique request identifier.
  - Feature: options to set control socket permissions.
  - Feature: Ruby arrays in response headers, improving compatibility with
    Rack v3.0.
  - Feature: Python bytearray response bodies for ASGI applications.
  - Bugfix: router could crash while sending large files. Thanks to
    rustedsword.
  - Bugfix: serving static files from a network filesystem could lead to
    error.
  - Bugfix: "uidmap" and "gidmap" isolation options validation.
  - Bugfix: abstract UNIX socket name could be corrupted during configuration
    validation. Thanks to Alejandro Colomar.
  - Bugfix: HTTP header field value encoding could be misinterpreted in Python
    module.
  - Bugfix: Node.js http.createServer() accepts and ignores the "options"
    argument, improving compatibility with strapi applications, among others.
  - Bugfix: ServerRequest.flushHeaders() implemented in Node.js module to make
    it compatible with Next.js.
  - Bugfix: ServerRequest.httpVersion variable format in Node.js module.
  - Bugfix: Node.js module handles standard library imports prefixed with
    "node:", making it possible to run newer Nuxt applications, among others.
  - Bugfix: Node.js tarball location changed to avoid build/install errors.
  - Bugfix: Go module sets environment variables necessary for building on
    macOS/arm64 systems.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.32.1-1.fc39.ngx
changelog:
  - Bugfix: NJS variables in templates may have incorrect values due to
    improper caching.
  - Bugfix: Wasm application process hangs after receiving restart signal from
    the control.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.29.1-1.fc39.ngx
changelog:
  - Bugfix: stop creating world-writeable directories.
  - Bugfix: memory leak related to njs.
  - Bugfix: path parsing in PHP applications.
  - Bugfix: enabled UTF-8 for Python config by default to avoid applications
    failing in some cases.
  - Bugfix: using asyncio.get_running_loop() instead of
    asyncio.get_event_loop() when it's available to prevent errors in some
    Python ASGI applications.
  - Bugfix: applications that make use of various low level APIs such as
    pthreads could fail to work correctly.
  - Bugfix: websocket endianness detection for obscure operating systems.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.30.0-1.fc39.ngx
changelog:
  - Change: remove Unix domain listen sockets upon reconfiguration.
  - Feature: basic URI rewrite support.
  - Feature: njs loadable modules support.
  - Feature: per-application logging.
  - Feature: conditional logging of route selection.
  - Feature: support the keys API on the request objects in njs.
  - Feature: default values for 'make install' pathnames such as prefix; this
    allows to './configure && make && sudo make install'.
  - Feature: "server_version" setting to omit the version token from "Server"
    header field.
  - Bugfix: request header field values could be corrupted in some cases; the
    bug had appeared in 1.29.0.
  - Bugfix: PHP error handling (added missing 403 and 404 errors).
  - Bugfix: Perl applications crash on second responder call.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.32.0-1.fc39.ngx
changelog:
  - Feature: WebAssembly Components using WASI interfaces defined in
    wasi:http/proxy@0.2.0.
  - Feature: conditional access logging.
  - Feature: njs variables access.
  - Feature: $request_id variable contains a string that is formed using
    random data and can be used as a unique request identifier.
  - Feature: options to set control socket permissions.
  - Feature: Ruby arrays in response headers, improving compatibility with
    Rack v3.0.
  - Feature: Python bytearray response bodies for ASGI applications.
  - Bugfix: router could crash while sending large files. Thanks to
    rustedsword.
  - Bugfix: serving static files from a network filesystem could lead to
    error.
  - Bugfix: "uidmap" and "gidmap" isolation options validation.
  - Bugfix: abstract UNIX socket name could be corrupted during configuration
    validation. Thanks to Alejandro Colomar.
  - Bugfix: HTTP header field value encoding could be misinterpreted in Python
    module.
  - Bugfix: Node.js http.createServer() accepts and ignores the "options"
    argument, improving compatibility with strapi applications, among others.
  - Bugfix: ServerRequest.flushHeaders() implemented in Node.js module to make
    it compatible with Next.js.
  - Bugfix: ServerRequest.httpVersion variable format in Node.js module.
  - Bugfix: Node.js module handles standard library imports prefixed with
    "node:", making it possible to run newer Nuxt applications, among others.
  - Bugfix: Node.js tarball location changed to avoid build/install errors.
  - Bugfix: Go module sets environment variables necessary for building on
    macOS/arm64 systems.


author: Nginx Packaging <nginx-packaging@f5.com> - 1.33.0-1.fc39.ngx
changelog:
  - Feature: make the number of router threads configurable.
  - Feature: make the listen(2) backlog configurable.
  - Feature: add Python application factory support.
  - Feature: add experimental chunked request body support. (Disabled by
    default).
  - Feature: add fuzzing via oss-fuzz.
  - Feature: add "if" option to the "match" object.
  - Feature: show list of loaded language modules in the /status endpoint.
  - Feature: Unit ships with a new Rust based CLI application "unitctl".
  - Feature: the wasm-wasi-component language module now inherits the
    processes environment.
  - Change: under systemd unit runs in forking mode (once again).
  - Change: if building with njs, version 0.8.3 or later is now required.
  - Change: Unit now builds with -std=gnu11 (C11 with GNU extensions).
  - Change: Unit now creates the full directory path for the PID file and
    control socket.
  - Change: build system improvements, including pretty printing the make
    output and enabling various make variables to influence the build process
    (see: make help).
  - Change: better detection of available runnable CPUs on Linux.
  - Change: default listen(2) backlog on Linux now defaults to Kernel default.
  - Bugfix: don't modify REQUEST_URI.
  - Bugfix: fix a crash when interrupting a download via a proxy.
  - Bugfix: wasm-wasi-component application process hangs after receiving
    restart signal from the control endpoint.
  - Bugfix: njs variables accessed with a JS template literal should not be
    cacheable.
  - Bugfix: properly handle deleting arrays of certificates.
  - Bugfix: don't create the $runstatedir directory which triggered an Alpine
    packaging error.


