I'm glad to announce a new release of NGINX Unit.
Besides improving the request routing abilities, this release simplifies
operations concerning the Go module. Now it can also be installed with
the "go get" command:
go get unit.nginx.org/go
Mind, however, that it requires the "unit-dev" package.
Great effort went into improving the efficiency and avoiding memory bloat in
cases where an application generates gigabytes of response body. Now Unit can
deal with that without much hassle. We will continue improving the performance
and increasing efficiency, as this is one of our primary priorities.
Changes with Unit 1.14.0 26 Dec 2019
*) Change: the Go package import name changed to "unit.nginx.org/go".
*) Change: Go package now links to libunit instead of including library
*) Feature: ability to change user and group for isolated applications
when Unit daemon runs as an unprivileged user.
*) Feature: request routing by source and destination addresses and
*) Bugfix: memory bloat on large responses.
We also updated our Docker images and switched them from Debian 9 to 10
as the base, so the language module versions have been updated respectively.
Python 3.6 module packages were added to CentOS and RHEL 7 repositories,
and Python 3.7 package was added to Amazon Linux 2 LTS. Please note that
the name of Python 2.7 package in these repositories was changed from
"unit-python" to "unit-python27".
The Go package now has the same name "unit-go" across all our repositories
and depends on "unit-dev".
This is the last release of 2019, so I'll use this opportunity to wish
a Happy New Year to our strong community. Thank you for your requests,
bug reports, ideas, and suggestions. Everything that we do, we primarily
do for you, our users.
This year, we made 8 releases, with 427 commits to the repository, where 65242
lines were added and 8219 removed. The biggest features of the year are:
- Support for Java Servlet Containers, which means that now Unit supports
- Advanced internal request routing that allows to filter requests by various
parameters, including: URI, header fields, arguments, cookies, addresses,
- Built-in WebSocket server offloading for Node.js and Java
- Isolation of application processes
- Serving of static files
- Reverse proxying
These features establish a firm basis for further development of Unit as a
general-purpose web server that is able to perform absolutely any task related
to handling and processing web protocols in the most efficient way. This is
our ultimate goal, and we are eager to achieve it over the coming years.
I'd like to thank everyone who worked hard with me on Unit through the year:
- Andrei Belov - system engineer, who maintained repositories and prepared
- Andrei Zeliankou - QA engineer, who wrote functional tests and ran fuzzing
- Artem Konev - technical writer, who wrote documentation and blog posts,
improved the website, and sometimes helped us to arrange
words in sentences the right way
- Axel Duch - junior developer, who improved request routing
- Igor Sysoev - senior developer and architect, who worked on request routing,
proxying, and many internal aspects
- Konstantin Pavlov - system engineer, who prepared Docker images and packages
- Maxim Romanov - senior developer, who worked on Java, WebSockets,
and internal IPC
- Tiago Natel de Moura - senior developer, who worked on isolation features
Thank you guys, I'm happy to work with you.
wbr, Valentin V. Bartenev
Changes with nginx 1.17.7 24 Dec 2019
*) Bugfix: a segmentation fault might occur on start or during
reconfiguration if the "rewrite" directive with an empty replacement
string was used in the configuration.
*) Bugfix: a segmentation fault might occur in a worker process if the
"break" directive was used with the "alias" directive or with the
"proxy_pass" directive with a URI.
*) Bugfix: the "Location" response header line might contain garbage if
the request URI was rewritten to the one containing a null character.
*) Bugfix: requests with bodies were handled incorrectly when returning
redirections with the "error_page" directive; the bug had appeared in
*) Bugfix: socket leak when using HTTP/2.
*) Bugfix: a timeout might occur while handling pipelined requests in an
SSL connection; the bug had appeared in 1.17.5.
*) Bugfix: in the ngx_http_dav_module.