Unit 1.22.0 release
Valentin V. Bartenev
vbart at nginx.com
Thu Feb 4 23:11:50 UTC 2021
I'm glad to announce a new release of NGINX Unit.
This is our first release of 2021, and it focuses on improving stability.
There's an extensive list of bugfixes, although many occur in rare conditions
that have so far been observed only in our test environments. These bugs
were caught due to improvements in our continuous functional testing; our QA,
Andrei Zeliankou, is always looking to increase the testing coverage and use
new techniques to spot various race conditions and leaks, thus improving
the quality of each release. This very important work never ends.
### IMPORTANT: Changes to official Linux packages
Starting with this release, the user and group accounts that run non-privileged
Unit processes are changed in our Linux packages:
- in previous packages: nobody:nobody
- in 1.22.0 and later: unit:unit
These settings are used to serve static files and run applications if "user"
or "group" options are not explicitly specified in the app configuration.
Please take a note of the change and update your configuration appropriately
before upgrading an existing Unit installation with our official packages:
The rationale for this change in our packages was that using "nobody" by
default was very inconvenient while serving static files. You can always
override these settings with the --user and --group daemon options in your
startup scripts. See here for more details:
### IMPORTANT 2: Changes to official Docker images
Another notable change is also related to our official distributions; in
this case, it affects our Docker images. Many asked us to provide the most
up-to-date versions of language modules in our Docker images, but there was
no maintainable way of doing this while still relying on the Debian base
image we used before.
Starting with 1.22.0, we stop maintaining images with language modules that
use the old Debian base; instead, now we rely on official Docker images for
latest language versions:
Our images are available at both Docker Hub and Amazon ECR Public Gallery;
you can also download them at our website.
Changes with Unit 1.22.0 04 Feb 2021
*) Feature: the ServerRequest and ServerResponse objects of Node.js
module are now compliant with Stream API.
*) Feature: support for specifying multiple directories in the "path"
option of Python apps.
*) Bugfix: a memory leak occurred in the router process when serving
files larger than 128K; the bug had appeared in 1.13.0.
*) Bugfix: apps could stop processing new requests under high load; the
bug had appeared in 1.19.0.
*) Bugfix: app processes could terminate unexpectedly under high load;
the bug had appeared in 1.19.0.
*) Bugfix: invalid HTTP responses were generated for some unusual status
*) Bugfix: the PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server
variables were missing in the PHP module.
*) Bugfix: the router process could crash with multithreaded apps under
*) Bugfix: Ruby apps with multithreading configured could crash on start
*) Bugfix: mount points weren't unmounted when the "mount" namespace
isolation was used; the bug had appeared in 1.21.0.
*) Bugfix: the router process could crash while removing or
reconfiguring an app that used WebSocket.
*) Bugfix: a memory leak occurring in the router process when removing
or reconfiguring an application; the bug had appeared in 1.19.0.
Meanwhile, we continue working on metrics and application restart APIs, SNI
support in TLS, and improvements to process isolation.
As always, we encourage you to follow our roadmap on GitHub, where your
ideas and requests are more than welcome:
wbr, Valentin V. Bartenev
More information about the unit