Unit 1.22.0 Released§
Hi,
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: https://unit.nginx.org/installation/#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:
https://unit.nginx.org/howto/source/#startup-and-shutdown
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: https://unit.nginx.org/installation/#docker-images
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
codes.
*) 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
high load.
*) Bugfix: Ruby apps with multithreading configured could crash on start
under load.
*) 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: https://github.com/orgs/nginx/projects/1
Stay tuned!
wbr, Valentin V. Bartenev