I'm glad to announce a new release of NGINX Unit.
In this release, we continue improving routing capabilities for more advanced
and precise request matching. Besides that, the control API was extended with
POST operations to simplify array manipulation in configuration.
Please check the documentation about new features:
- Matching rules: https://unit.nginx.org/configuration/#condition-matching
- API operations: https://unit.nginx.org/configuration/#configuration-management
If you prefer to perceive information visually, here's a recording of
NGINX Meetup that gives a good overview of dynamic application routing,
although doesn't discuss new features from this release:
Also, a number of annoying bugs were fixed; thanks to your feedback,
the Node.js module now works fine with more applications.
Changes with Unit 1.9.0 30 May 2019
*) Feature: request routing by arguments, headers, and cookies.
*) Feature: route matching patterns allow a wildcard in the middle.
*) Feature: POST operation for appending elements to arrays in
*) Feature: support for changing credentials using CAP_SETUID and
CAP_SETGID capabilities on Linux without running main process as
*) Bugfix: memory leak in the router process might have happened when a
client prematurely closed the connection.
*) Bugfix: applying a large configuration might have failed.
*) Bugfix: PUT and DELETE operations on array elements in configuration
did not work.
*) Bugfix: request schema in applications did not reflect TLS
*) Bugfix: restored compatibility with Node.js applications that use
ServerResponse._implicitHeader() function; the bug had appeared in
*) Bugfix: various compatibility issues with Node.js applications.
With this release, packages for Ubuntu 19.04 "disco" are also available.
See the website for a full list of available repositories:
Meanwhile, we continue working on WebSocket support. It's almost ready and
has great chances to be included in the next release for Node.js and Java
Work on proxying and static files serving is also in progress; this will
take a bit more time.
wbr, Valentin V. Bartenev
On Thursday 23 May 2019 14:52:37 Peter TKATCHENKO wrote:
> Thanks for your answer.
> I've just rebuilt the ports with 'DEBUG' option and restarted the service.
> When the problem comes - I'll send the logs here. Hope the problem comes
> soon as the log is growing very fast...
In order to avoid growing it too much, you can periodically truncate the log file.
# truncate -s 0 /path/to/unit.log
wbr, Valentin V. Bartenev
I'm using Unit to publish a PHP application (NextCloud). I am on FreeBSD
11.2 (jailed), I use PHP 7.2 from packages. There is an NGINX server as
When I check Unit logs I see many records like this:
2019/05/16 12:44:39 [info] 88085#101952 *73260 shutdown(177, 2) failed
(57: Socket is not connected)
And sometimes like this:
2019/05/16 12:53:39 [alert] 88085#101951 *74551 socket close(177) failed
(54: Connection reset by peer)
The application seems to work correctly, but I would like to understand
the cause of these errors, probably I need to tune something?
Another problem is more important. Sometimes (once a week) 'unit:
router' process begins to consume 100% of 4 VCPU (!!), it takes about 15
minutes to grow the CPU usage, and finish by blocking completely the
application ('bad gateway' error on nginx). Restart of unitd service
solves the problem. I see many errors of the first type in logs at this
moment, but nothing more interesting.