Nginx Forum - Nginx Announcements - English nginx announcements [read only] http://www.ldmicj.icu/list.php?27 Sun, 22 Nov 2020 12:12:09 -0500 Phorum 5.2.16 http://www.ldmicj.icu/read.php?27,290019,290019#msg-290019 [nginx-announce] unit-1.21.0 (no replies) http://www.ldmicj.icu/read.php?27,290019,290019#msg-290019
I'm glad to announce a new release of NGINX Unit.

Our two previous releases were thoroughly packed with new features and
capabilities, but Unit 1.21.0 isn't an exception either. This is our
third big release in a row, with only six weeks since the previous one!

Perhaps, the most notable feature of this release is the support for
multithreaded request handling in application processes. Now, you can
fine-tune the number of threads used for request handling in each
application process; this improves scaling and optimize memory usage.

As a result, your apps can use a combination of multiple processes and
multiple threads per each process for truly dynamic scaling; the feature
is available for any Java, Python, Perl, or Ruby apps out of the box
without any need to update their code.

Moreover, if you make use of ASGI support in Unit (introduced in the
previous release), each thread of each process of your application
can run asynchronously. Pretty neat, huh?

To configure the number of threads per process, use the "threads" option
of the application object:

- https://unit.nginx.org/configuration/#applications

Yet another cool feature is the long-awaited support for regular expressions.
In Unit, they enable granular request filtering and routing via our compound
matching rules; now, with PCRE syntax available, your request matching
capabilities are limited only by your imagination. For details and examples,
see our documentation:

- https://unit.nginx.org/configuration/#routes


Changes with Unit 1.21.0 19 Nov 2020

*) Change: procfs is mounted by default for all languages when "rootfs"
isolation is used.

*) Change: any characters valid according to RFC 7230 are now allowed in
HTTP header field names.

*) Change: HTTP header fields with underscores ("_") are now discarded
from requests by default.

*) Feature: optional multithreaded request processing for Java, Python,
Perl, and Ruby apps.

*) Feature: regular expressions in route matching patterns.

*) Feature: compatibility with Python 3.9.

*) Feature: the Python module now supports ASGI 2.0 legacy applications.

*) Feature: the "protocol" option in Python applications aids choice
between ASGI and WSGI.

*) Feature: the fastcgi_finish_request() PHP function that finalizes
request processing and continues code execution without holding onto
the client connection.

*) Feature: the "discard_unsafe_fields" HTTP option that enables
discarding request header fields with irregular (but still valid)
characters in the field name.

*) Feature: the "procfs" and "tmpfs" automount isolation options to
disable automatic mounting of eponymous filesystems.

*) Bugfix: the router process could crash when running Go applications
under high load; the bug had appeared in 1.19.0.

*) Bugfix: some language dependencies could remain mounted after using
"rootfs" isolation.

*) Bugfix: various compatibility issues in Java applications.

*) Bugfix: the Java module built with the musl C library couldn't run
applications that use "rootfs" isolation.


Also, packages for Ubuntu 20.10 "Groovy" are available in our repositories:

- https://unit.nginx.org/installation/#ubuntu-2010

Thanks to Sergey Osokin, the FreeBSD port of Unit now provides an almost
exhaustive set of language modules:

- https://www.freshports.org/www/unit/

We encourage you to follow our roadmap on GitHub, where your ideas and requests
are always more than welcome:

- https://github.com/orgs/nginx/projects/1

Stay tuned!

wbr, Valentin V. Bartenev



_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 19 Nov 2020 18:38:08 -0500
http://www.ldmicj.icu/read.php?27,289808,289808#msg-289808 [nginx-announce] nginx-1.19.4 (no replies) http://www.ldmicj.icu/read.php?27,289808,289808#msg-289808
*) Feature: the "ssl_conf_command", "proxy_ssl_conf_command",
"grpc_ssl_conf_command", and "uwsgi_ssl_conf_command" directives.

*) Feature: the "ssl_reject_handshake" directive.

*) Feature: the "proxy_smtp_auth" directive in mail proxy.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 27 Oct 2020 11:28:13 -0400
http://www.ldmicj.icu/read.php?27,289695,289695#msg-289695 [nginx-announce] unit-1.20.0 (no replies) http://www.ldmicj.icu/read.php?27,289695,289695#msg-289695
I'm glad to announce a new release of NGINX Unit.

It is yet another big release, featuring ASGI support for Python and a long list
of other improvements and bug fixes.

ASGI 3.0 is a modern standardized interface that enables writing natively
asynchronous web applications making use of the async/await feature available
inlatest versions of Python. Now, Unit fully supports it along with WSGI.
Even more, Unit automatically detects the interface your Python app is using
(ASGI or WSGI); the configuration experience remains the same, though. Also,
our take on ASGI relies on Unit's native high-perf capabilities to implement
WebSockets.

To learn more about the new feature, check out the documentation:

- https://unit.nginx.org/configuration/#python

In addition, we've prepared for you a couple of howtos on configuring popular
ASGI-based frameworks with Unit:

- Quart: https://unit.nginx.org/howto/quart/ (note a simple WebSocket app)

- Starlette: https://unit.nginx.org/howto/starlette/

Finally, we've updated the Django howto to include the ASGI alternative:

- https://unit.nginx.org/howto/django/


Changes with Unit 1.20.0 08 Oct 2020

*) Change: the PHP module is now initialized before chrooting; this
enables loading all extensions from the host system.

*) Change: AVIF and APNG image formats added to the default MIME type
list.

*) Change: functional tests migrated to the pytest framework.

*) Feature: the Python module now fully supports applications that use
the ASGI 3.0 server interface.

*) Feature: the Python module now has a built-in WebSocket server
implementation for applications, compatible with the HTTP & WebSocket
ASGI Message Format 2.1 specification.

*) Feature: automatic mounting of an isolated "/tmp" file system into
chrooted application environments.

*) Feature: the $host variable contains a normalized "Host" request
value.

*) Feature: the "callable" option sets Python application callable
names.

*) Feature: compatibility with PHP 8 RC 1. Thanks to Remi Collet.

*) Feature: the "automount" option in the "isolation" object allows to
turn off the automatic mounting of language module dependencies.

*) Bugfix: "pass"-ing requests to upstreams from a route was broken; the
bug had appeared in 1.19.0. Thanks to 洪志?(Hong Zhi Dao) for
discovering and fixing it.

*) Bugfix: the router process could crash during reconfiguration.

*) Bugfix: a memory leak occurring in the router process; the bug had
appeared in 1.18.0.

*) Bugfix: the "!" (non-empty) pattern was matched incorrectly; the bug
had appeared in 1.19.0.

*) Bugfix: fixed building on platforms without sendfile() support,
notably NetBSD; the bug had appeared in 1.16.0.


I would very much like to highlight one of these changes. Perhaps the least
noticeable, it is still important for the entire project: our functional tests
moved to a more feature-rich pytest framework from the native Python unittest
module that we've used previously. This change should enable us to write more
sophisticated tests, boosting the overall quality of our future releases.

All in all, this is a genuinely solid release, but I'm still more excited
about the things yet to come. Yes, even more great features are coming our
way very shortly! Right now, we are tinkering with route matching patterns
to support regular expressions; working on keepalive connection caching;
adding multithreading to application modules; and finally, fabricating the
metrics API!

We encourage you to follow our roadmap on GitHub, where your ideas and requests
are always more than welcome:

- https://github.com/orgs/nginx/projects/1

Stay tuned!

wbr, Valentin V. Bartenev



_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 08 Oct 2020 17:20:00 -0400
http://www.ldmicj.icu/read.php?27,289595,289595#msg-289595 [nginx-announce] njs-0.4.4 (no replies) http://www.ldmicj.icu/read.php?27,289595,289595#msg-289595
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release proceeds to extend the coverage of ECMAScript
specifications.

Notable new features:
- Buffer object.
: >> var buf = Buffer.from([0x80,206,177,206,178])
: undefined
: >> buf.slice(1).toString()
: 'αβ'
: >> buf.toString('base64')
: 'gM6xzrI='

- DataView object.
: >> (new DataView(buf.buffer)).getUint16()
: 32974

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs
- Using node modules with njs:
http://nginx.org/en/docs/njs/node_modules.html
- Writing njs code using TypeScript definition files:
  http://nginx.org/en/docs/njs/typescript.html

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel


Changes with njs 0.4.4                                                
29 Sep 2020

    nginx modules:

    *) Bugfix: fixed location merge.

    *) Bugfix: fixed r.httpVersion for HTTP/2.

    Core:

    *) Feature: added support for numeric separators (ES12).

    *) Feature: added remaining methods for %TypedArray%.prototype.
       The following methods were added: every(), filter(), find(),
       findIndex(), forEach(), includes(), indexOf(), lastIndexOf(),
       map(), reduce(), reduceRight(), reverse(), some().

    *) Feature: added %TypedArray% remaining methods.
       The following methods were added: from(), of().

    *) Feature: added DataView object.

    *) Feature: added Buffer object implementation.

    *) Feature: added support for ArrayBuffer in
       TextDecoder.prototype.decode().

    *) Feature: added support for Buffer object in "crypto" methods.

    *) Feature: added support for Buffer object in "fs" methods.

    *) Change: Hash.prototype.digest() and Hmac.prototype.digest()
       now return a Buffer instance instead of a byte string when
       encoding is not provided.

    *) Change: fs.readFile() and friends now return a Buffer instance
       instead of a byte string when encoding is not provided.

    *) Bugfix: fixed function "prototype" property handler while
       setting.

    *) Bugfix: fixed function "constructor" property handler while
       setting.

    *) Bugfix: fixed String.prototype.indexOf() for byte strings.

    *) Bugfix: fixed RegExpBuiltinExec() with a global flag and
       byte strings.

    *) Bugfix: fixed RegExp.prototype[Symbol.replace] when the
       replacement value is a function.

    *) Bugfix: fixed TextDecoder.prototype.decode() with non-zero
       TypedArray offset.

_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 29 Sep 2020 13:34:03 -0400
http://www.ldmicj.icu/read.php?27,289585,289585#msg-289585 [nginx-announce] nginx-1.19.3 (no replies) http://www.ldmicj.icu/read.php?27,289585,289585#msg-289585
*) Feature: the ngx_stream_set_module.

*) Feature: the "proxy_cookie_flags" directive.

*) Feature: the "userid_flags" directive.

*) Bugfix: the "stale-if-error" cache control extension was erroneously
applied if backend returned a response with status code 500, 502,
503, 504, 403, 404, or 429.

*) Bugfix: "[crit] cache file ... has too long header" messages might
appear in logs if caching was used and the backend returned responses
with the "Vary" header line.

*) Workaround: "[crit] SSL_write() failed" messages might appear in logs
when using OpenSSL 1.1.1.

*) Bugfix: "SSL_shutdown() failed (SSL: ... bad write retry)" messages
might appear in logs; the bug had appeared in 1.19.2.

*) Bugfix: a segmentation fault might occur in a worker process when
using HTTP/2 if errors with code 400 were redirected to a proxied
location using the "error_page" directive.

*) Bugfix: socket leak when using HTTP/2 and subrequests in the njs
module.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 29 Sep 2020 10:48:13 -0400
http://www.ldmicj.icu/read.php?27,289102,289102#msg-289102 [nginx-announce] unit-1.19.0 (no replies) http://www.ldmicj.icu/read.php?27,289102,289102#msg-289102
I'm always happy to announce a new release of NGINX Unit, but this one's BIG.
Besides the varied features and bugfixes, some breakthrough improvements were
made under the hood.

As you may know, Unit uses an advanced architecture that relies on dedicated
processes to serve different roles in request processing. The process that
handles client connections is the router. It uses asynchronous threads (one
per CPU core) to accept new connections and send or receive data over already
established connections in a non-blocking manner. For security and scalability,
all applications run as separate processes over which you have a degree of
control: https://unit.nginx.org/configuration/#process-management

To talk to application processes, relay requests for actual processing,
and obtain their responses, the router process uses an elaborate mechanism
of inter-process communication (IPC) based on shared memory segments.
The general idea is to avoid copying data between processes and minimize
overhead, potentially achieving almost zero-latency application interaction.

Our first implementation of this protocol used a complex algorithm to
distribute requests between processes, heavily utilizing Unix socket pairs
to pass synchronization control messages. In practice, this turned out
rather sub-optimal due to lots of extra syscalls and overt complexity.
Also, the push semantics became a serious limitation that prevented us
from efficiently handling asynchronous applications.

Thus, we stepped back a bit at the end of the last year to meticulously
reconsider our approach to IPC, and now this tremendous work finally sees
the light of day with the release of Unit version 1.19.0. Maintaining the
progress achieved while working with shared memory segments, the protocol now
is enhanced to bring the number of syscalls almost to zero under heavy load.
We have also changed the request distribution semantics. Now, instead of
pushing requests to application processes using a complex router process
algorithm, we make application processes pull requests out of a shared
queue anytime they're ready. This enables implementing async interfaces
in applications in the most effective manner.

Relying on this new approach to IPC, we shall be able to improve the
performance of Go and Node.js modules in the upcoming releases, also
introducing multithreading and new interfaces, such as ASGI in Python.

We are obsessed over performance and will continue optimizing Unit to
make it the best and brightest in every aspect.

As for the other features of the release, there's an improvement in proxying:
now it speaks HTTP/1.1 and accepts chunked responses from backends.

Moreover, request matching rules were also upgraded to enable more complex
wildcard patterns like "*/some/*/path/*.php*".

Finally, we have introduced our first configuration variables. They are
a small bunch at the moment, but that's to change. In a while, variables
shall be sufficiently diversified and will be available in more and more
options.



Changes with Unit 1.19.0 13 Aug 2020

*) Feature: reworked IPC between the router process and the applications
to lower latencies, increase performance, and improve scalability.

*) Feature: support for an arbitrary number of wildcards in route
matching patterns.

*) Feature: chunked transfer encoding in proxy responses.

*) Feature: basic variables support in the "pass" option.

*) Feature: compatibility with PHP 8 Beta 1. Thanks to Remi Collet.

*) Bugfix: the router process could crash while passing requests to an
application under high load.

*) Bugfix: a number of language modules failed to build on some systems;
the bug had appeared in 1.18.0.

*) Bugfix: time in error log messages from PHP applications could lag.

*) Bugfix: reconfiguration requests could hang if an application had
failed to start; the bug had appeared in 1.18.0.

*) Bugfix: memory leak during reconfiguration.

*) Bugfix: the daemon didn't start without language modules; the bug had
appeared in 1.18.0.

*) Bugfix: the router process could crash at exit.

*) Bugfix: Node.js applications could crash at exit.

*) Bugfix: the Ruby module could be linked against a wrong library
version.



Also, official packages for Fedora 32 are available now:

- https://unit.nginx.org/installation/#fedora

And if you'd like to know more about the features introduced recently in
the previous release, see the blog posts:

- NGINX Unit 1.18.0 Adds Filesystem Isolation and Other Enhancements
https://www.nginx.com/blog/nginx-unit-1-18-0-now-available/

- Filesystem Isolation in NGINX Unit
https://www.nginx.com/blog/filesystem-isolation-nginx-unit/

Stay tuned!

wbr, Valentin V. Bartenev



_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 13 Aug 2020 17:14:08 -0400
http://www.ldmicj.icu/read.php?27,289069,289069#msg-289069 [nginx-announce] njs-0.4.3 (no replies) http://www.ldmicj.icu/read.php?27,289069,289069#msg-289069
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release proceeds to extend the coverage of ECMAScript
specifications.

Notable new features:
- querystring module.
: var qs = require('querystring');
:
: function fix_args(args) {
:     args = qs.parse(args);
:
:     args.t2 = args.t;
:     delete args.t;
:
:     return qs.stringify(args);
: }
:
: fix_args("t=1&v=%41%42") -> "v=AB&t2=1"

- TextDecoder/TextEncoder.
: >> (new TextDecoder()).decode(new Uint8Array([206,177,206,178]))
: 'αβ'

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs
- Using node modules with njs:
http://nginx.org/en/docs/njs/node_modules.html
- Writing njs code using TypeScript definition files:
  http://nginx.org/en/docs/njs/typescript.html

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel


Changes with njs
0.4.3                                                      11 Aug 2020

    Core:

    *) Feature: added Query String module.

    *) Feature: improved fs.mkdir() to support recursive directory
creation.
       Thanks to Artem S. Povalyukhin.

    *) Feature: improved fs.rmdir() to support recursive directory removal.
       Thanks to Artem S. Povalyukhin.

    *) Feature: introduced UTF-8 decoder according to WHATWG encoding spec.

    *) Feature: added TextEncoder/TextDecoder implementation.

    *) Bugfix: fixed parsing return statement without semicolon.

    *) Bugfix: fixed njs_number_to_int32() for big-endian platforms.

    *) Bugfix: fixed unit test on big-endian platforms.

    *) Bugfix: fixed regexp-literals parsing with '=' characters.

    *) Bugfix: fixed pre/post increment/decrement in assignment
operations.
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 11 Aug 2020 13:28:14 -0400
http://www.ldmicj.icu/read.php?27,289064,289064#msg-289064 [nginx-announce] nginx-1.19.2 (no replies) http://www.ldmicj.icu/read.php?27,289064,289064#msg-289064
*) Change: now nginx starts closing keepalive connections before all
free worker connections are exhausted, and logs a warning about this
to the error log.

*) Change: optimization of client request body reading when using
chunked transfer encoding.

*) Bugfix: memory leak if the "ssl_ocsp" directive was used.

*) Bugfix: "zero size buf in output" alerts might appear in logs if a
FastCGI server returned an incorrect response; the bug had appeared
in 1.19.1.

*) Bugfix: a segmentation fault might occur in a worker process if
different large_client_header_buffers sizes were used in different
virtual servers.

*) Bugfix: SSL shutdown might not work.

*) Bugfix: "SSL_shutdown() failed (SSL: ... bad write retry)" messages
might appear in logs.

*) Bugfix: in the ngx_http_slice_module.

*) Bugfix: in the ngx_http_xslt_filter_module.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 11 Aug 2020 11:12:07 -0400
http://www.ldmicj.icu/read.php?27,288623,288623#msg-288623 [nginx-announce] njs-0.4.2 (no replies) http://www.ldmicj.icu/read.php?27,288623,288623#msg-288623
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release proceeds to extend the coverage of ECMAScript
specification.

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs
- Using node modules with njs: http://nginx.org/en/docs/njs/node_modules.html
- Writing njs code using TypeScript definition files:
http://nginx.org/en/docs/njs/typescript.html

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel


Changes with njs 0.4.2 07 Jul 2020

Core:

*) Feature: added RegExp.prototype[Symbol.replace].

*) Feature: introduced line level backtrace.

*) Feature: added %TypedArray%.prototype.sort().

*) Feature: extended "fs" module. Added mkdir(), readdir(), rmdir()
and friends.
Thanks to Artem S. Povalyukhin.

*) Improvement: parser refactoring.

*) Bugfix: fixed TypedScript API description for HTTP headers.

*) Bugfix: fixed TypedScript API description for NjsByteString type.

*) Bugfix: fixed String.prototype.repeat() according to the
specification.

*) Bugfix: fixed parsing of flags for regexp literals.

*) Bugfix: fixed index generation for global objects in generator.

*) Bugfix: fixed String.prototype.replace() according to the
specification.

*) Bugfix: fixed %TypedArray%.prototype.copyWithin() with nonzero
byte offset.

*) Bugfix: fixed Array.prototype.splice() for sparse arrays.

*) Bugfix: fixed Array.prototype.reverse() for sparse arrays.

*) Bugfix: fixed Array.prototype.sort() for sparse arrays.

_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 07 Jul 2020 15:28:14 -0400
http://www.ldmicj.icu/read.php?27,288616,288616#msg-288616 [nginx-announce] nginx-1.19.1 (no replies) http://www.ldmicj.icu/read.php?27,288616,288616#msg-288616
*) Change: the "lingering_close", "lingering_time", and
"lingering_timeout" directives now work when using HTTP/2.

*) Change: now extra data sent by a backend are always discarded.

*) Change: now after receiving a too short response from a FastCGI
server nginx tries to send the available part of the response to the
client, and then closes the client connection.

*) Change: now after receiving a response with incorrect length from a
gRPC backend nginx stops response processing with an error.

*) Feature: the "min_free" parameter of the "proxy_cache_path",
"fastcgi_cache_path", "scgi_cache_path", and "uwsgi_cache_path"
directives.
Thanks to Adam Bambuch.

*) Bugfix: nginx did not delete unix domain listen sockets during
graceful shutdown on the SIGQUIT signal.

*) Bugfix: zero length UDP datagrams were not proxied.

*) Bugfix: proxying to uwsgi backends using SSL might not work.
Thanks to Guanzhong Chen.

*) Bugfix: in error handling when using the "ssl_ocsp" directive.

*) Bugfix: on XFS and NFS file systems disk cache size might be
calculated incorrectly.

*) Bugfix: "negative size buf in writer" alerts might appear in logs if
a memcached server returned a malformed response.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 07 Jul 2020 12:12:05 -0400
http://www.ldmicj.icu/read.php?27,288207,288207#msg-288207 [nginx-announce] unit-1.18.0 (no replies) http://www.ldmicj.icu/read.php?27,288207,288207#msg-288207
I'm glad to announce a new release of NGINX Unit.

This release includes a few internal routing improvements that simplify some
configurations and a new isolation option for chrooting application processes
called "rootfs".


Changes with Unit 1.18.0 28 May 2020

*) Feature: the "rootfs" isolation option for changing root filesystem
for an application.

*) Feature: multiple "targets" in PHP applications.

*) Feature: support for percent encoding in the "uri" and "arguments"
matching options and in the "pass" option.


Also, our official packages for the recently released Ubuntu 20.04 (Focal Fossa)
are available now:

- https://unit.nginx.org/installation/#ubuntu

At least two of the features in this release deserve special attention.

Changing The Root Filesystem
----------------------------

Security is our top priority, so let's look closer at the "rootfs"
option first.

The coolest thing about it is that it's not just a simple chroot() system
call as some may expect. It's not a secret that chroot() is not intended
for security purposes, and there's plenty of ways for an attacker to get out
of the chrooted directory (just check "man 2 chroot"). That's why on modern
systems Unit can use pivot_root() with the "mount" namespace isolation
enabled, which is way more secure and pretty similar to putting your
application in an individual container.

Also, our goal is to make any security option as easy to use as possible.
In this case, Unit automatically tries to mount all the necessary
language-specific dependencies inside a new root, so you won't need
to care about them. Currently, this capability works for selected languages
only, but the support will be extended in the next releases.

For more information and examples of "rootfs" usage, check the documentation:

- https://unit.nginx.org/configuration/#process-isolation

Now to the second feature...

Multiple PHP application "targets"
----------------------------------

The other major update in this release is called "targets", aiming to simplify
configuration for many PHP applications. Perhaps, it is best illustrated by an
example: WordPress. This is one of many applications that use two different
addressing schemes:

1. Most user requests are handled by index.php regardless of the actual
request URI.

2. Administration interface and some components rely on direct requests
to specific .php scripts named in the URI.

Earlier, users had to configure two Unit applications to handle this disparity:

{
"wp_index": {
"type": "php",
"user": "wp_user",
"group": "wp_user",
"root": "/path/to/wordpress/",
"script": "index.php"
},

"wp_direct": {
"type": "php",
"user": "wp_user",
"group": "wp_user",
"root": "/path/to/wordpress/"
}
}

The first app directly executes the .php scripts named by the URI, whereas the
second one passes all requests to index.php.

Now, you can use "targets" instead:

{
"wp": {
"type": "php",
"user": "wp_user",
"group": "wp_user",

"targets": {
"index": {
"root": "/path/to/wordpress/",
"script": "index.php"
},

"direct": {
"root": "/path/to/wordpress/"
}
}
}
}

The complete example is available in our WordPress howto:

- https://unit.nginx.org/howto/wordpress/

You can configure as many "targets" in one PHP application as you want, routing
requests between them using various sophisticated request matching rules.

Check our website to know more about the new option:

- https://unit.nginx.org/configuration/#targets

To learn more about request matching rules:

- https://unit.nginx.org/configuration/#condition-matching

Finally, see here for more howtos:

- https://unit.nginx.org/howto/

We have plenty of them, covering many popular web applications and frameworks,
but if your favorite one is still missing, let us know by opening a ticket here:

- https://github.com/nginx/unit-docs/issues

To keep the finger on the pulse, refer to our further plans in the roadmap here:

- https://github.com/orgs/nginx/projects/1

Stay tuned!

wbr, Valentin V. Bartenev



_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 28 May 2020 18:18:01 -0400
http://www.ldmicj.icu/read.php?27,288143,288143#msg-288143 [nginx-announce] nginx-1.19.0 (no replies) http://www.ldmicj.icu/read.php?27,288143,288143#msg-288143
*) Feature: client certificate validation with OCSP.

*) Bugfix: "upstream sent frame for closed stream" errors might occur
when working with gRPC backends.

*) Bugfix: OCSP stapling might not work if the "resolver" directive was
not specified.

*) Bugfix: connections with incorrect HTTP/2 preface were not logged.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 26 May 2020 11:10:09 -0400
http://www.ldmicj.icu/read.php?27,288073,288073#msg-288073 [nginx-announce] njs-0.4.1 (no replies) http://www.ldmicj.icu/read.php?27,288073,288073#msg-288073
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release extends http module.

Notable new features:
- raw headers API:
With the following request headers:
: Host: localhost
: Foo: bar
: foo: bar2
All 'foo' headers can be collected with the syntax:
: r.rawHeadersIn.filter(v=>v[0].toLowerCase() == 'foo').map(v=>v[1]);
the output will be:
: ['bar', 'bar2']

- TypeScript API definition:
: foo.ts:
: /// <reference path="ngx_http_js_module.d.ts" />
: function content_handler(r: NginxHTTPRequest)
: {
: r.headersOut['content-type'] = 'text/plain';
: r.return(200, "Hello from TypeScript");
: }
:
: tsc foo.ts --outFile foo.js
foo.js can be used directly with njs.

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Using node modules with njs: http://nginx.org/en/docs/njs/node_modules.html
- Writing njs code using TypeScript definition files:
http://nginx.org/en/docs/njs/typescript.html

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel

Changes with njs 0.4.1 19 May 2020

*) Feature: added support for multi-value headers in r.headersIn.

*) Feature: introduced raw headers API.

*) Feature: added TypeScript API description.

Core:

*) Bugfix: fixed Array.prototype.slice() for sparse arrays._______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 19 May 2020 10:26:06 -0400
http://www.ldmicj.icu/read.php?27,287795,287795#msg-287795 [nginx-announce] njs-0.4.0 (no replies) http://www.ldmicj.icu/read.php?27,287795,287795#msg-287795
I’m glad to announce a new release of NGINX JavaScript module (njs).

This release focuses on extending http and stream modules.

Notable new features:
- js_import directive.
: nginx.conf:
: js_import foo.js;
: js_import lib from path/file.js;
:
: location / {
: js_content foo.bar;
: }
:
: foo.js:
: function bar(r) {
: r.return(200);
: }
:
: export default {bar};

- multi-value headers support in r.headersOut:
: foo.js:
: function content(r) {
: r.headersOut[‘Set-Cookie’] = [
: ‘foo=111; Max-Age=3600; path=/?
: ‘bar=qqq; Max-Age=86400; path=/?br /> : ];
:
: r.return(200);
: }

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs
- Using node modules with njs: http://nginx.org/en/docs/njs/node_modules.html

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel

Changes with njs 0.4.0 23 Apr 2020

nginx modules:

*) Feature: added js_import directive.

*) Feature: added support for multi-value headers in r.headersOut.

*) Improvement: iteration over r.headersOut with special headers.

*) Improvement: iteration over r.headersOut with duplicates.

*) Change: r.responseBody property handler now returns “undefined?br /> instead of throwing an exception if response body is not available.

Core:

*) Feature: added script arguments support in CLI.

*) Feature: converting externals values to native js objects.

*) Bugfix: fixed NULL-pointer dereference in “__proto__?property
handler.

*) Bugfix: fixed handling of no-newline at the end of the script.

*) Bugfix: fixed RegExp() constructor with empty pattern and
non-empty flags.

*) Bugfix: fixed String.prototype.replace() when function
returns non-string.

*) Bugfix: fixed reading of pseudofiles in “fs?
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Thu, 23 Apr 2020 12:12:05 -0400
http://www.ldmicj.icu/read.php?27,287742,287742#msg-287742 [nginx-announce] nginx-1.18.0 (no replies) http://www.ldmicj.icu/read.php?27,287742,287742#msg-287742
*) 1.18.x stable branch.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 21 Apr 2020 10:46:14 -0400
http://www.ldmicj.icu/read.php?27,287688,287688#msg-287688 [nginx-announce] unit-1.17.0 (no replies) http://www.ldmicj.icu/read.php?27,287688,287688#msg-287688
I'm glad to announce a new release of NGINX Unit.

In addition to improved stability, this release introduces two handy features.

The first one is configured using the "return" and "location" options of the
action object. It can be used to immediately generate a simple HTTP response
with an arbitrary status - for example, to deny access to some resources:

{
"match": {
"uri": "*/.git/*"
},

"action": {
"return": 403
}
}

Or, you can redirect a client to another resource:

{
"match": {
"host": "example.org",
},

"action": {
"return": 301,
"location": "http://www.example.org"
}
}

See the documentation for a detailed description of routing:

- https://unit.nginx.org/configuration/#routes

The second new feature of the release is mostly syntax sugar rather than new
functionality. Now, you can specify servers' weights in an upstream group
using fractional numbers.

Say, you have a bunch of servers and want one of them to receive half as many
requests as the others for some reason. Previously, the only way to achieve
that was to double the weights of all the other servers:

{
"192.168.0.101:8080": {
"weight": 2
},
"192.168.0.102:8080": {
"weight": 2
},
"192.168.0.103:8080": { },
"192.168.0.104:8080": {
"weight": 2
}
}

Using fractional weights, you can perform the update much easier by altering
the weight of the server in question:

{
"192.168.0.101:8080": { },
"192.168.0.102:8080": { },
"192.168.0.103:8080": {
"weight": 0.5
},
"192.168.0.104:8080": { }
}

For details of server groups, see here:

- https://unit.nginx.org/configuration/#upstreams


Changes with Unit 1.17.0 16 Apr 2020

*) Feature: a "return" action with optional "location" for immediate
responses and external redirection.

*) Feature: fractional weights support for upstream servers.

*) Bugfix: accidental 502 "Bad Gateway" errors might have occurred in
applications under high load.

*) Bugfix: memory leak in the router; the bug had appeared in 1.13.0.

*) Bugfix: segmentation fault might have occurred in the router process
when reaching open connections limit.

*) Bugfix: "close() failed (9: Bad file descriptor)" alerts might have
appeared in the log while processing large request bodies; the bug
had appeared in 1.16.0.

*) Bugfix: existing application processes didn't reopen the log file.

*) Bugfix: incompatibility with some Node.js applications.

*) Bugfix: broken build on DragonFly BSD; the bug had appeared in
1.16.0.


Please also see a blog post about the new features of our two previous releases:

- https://www.nginx.com/blog/nginx-unit-1-16-0-now-available/

To keep the finger on the pulse, refer to our further plans in the roadmap here:

- https://github.com/orgs/nginx/projects/1

Stay healthy, stay home!

wbr, Valentin V. Bartenev



_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 16 Apr 2020 14:16:13 -0400
http://www.ldmicj.icu/read.php?27,287645,287645#msg-287645 [nginx-announce] nginx-1.17.10 (no replies) http://www.ldmicj.icu/read.php?27,287645,287645#msg-287645
*) Feature: the "auth_delay" directive.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 14 Apr 2020 10:36:10 -0400
http://www.ldmicj.icu/read.php?27,287321,287321#msg-287321 [nginx-announce] unit-1.16.0 (no replies) http://www.ldmicj.icu/read.php?27,287321,287321#msg-287321
I'm glad to announce a new release of NGINX Unit.

-------------------------------------------------------------------
To all Unit package maintainers: please don't miss the new '--tmp'
configure option. It specifies the directory where the Unit daemon
stores temporary files (i.e. large request bodies) at runtime.
-------------------------------------------------------------------

In this release, we continue improving the functionality related to
proxying and static media asset handling.

Now, the new 'upstreams' object enables creating server groups
for weighted round-robin load balancing:

{
"listeners": {
"*:80": {
"pass": "upstreams/rr-lb"
}
},

"upstreams": {
"rr-lb": {
"servers": {
"192.168.0.100:8080": { },
"192.168.0.101:8080": {
"weight": 2
}
}
}
}
}


See the docs for details:

- https://unit.nginx.org/configuration/#configuration-upstreams

So far, it's rather basic, but many more proxying and load-balancing
features are planned for future releases.

By its design, the new 'fallback' option is somewhat similar to the
'try_files' directive in nginx. It allows proceeding to another
action if a file isn't available:

{
"share": "/data/www/",

"fallback": {
"pass": "applications/php"
}
}


In the example above, an attempt is made first to serve a request
with a file from the "/data/www/" directory. If there's no such
file, the request is passed to the "php" application.

Also, you can chain such fallback actions:

{
"share": "/data/www/",

"fallback": {
"share": "/data/cache/",

"fallback": {
"proxy": "http://127.0.0.1:9000"
}
}
}


More info:

- https://unit.nginx.org/configuration/#configuration-fallback

Finally, configurations you upload can use line (//) and block (/* */)
comments. Now, Unit doesn't complain; instead, it strips them from the
JSON payload. This comes in handy if you store your configuration in a
file and edit it manually.


Changes with Unit 1.16.0 12 Mar 2020

*) Feature: basic load-balancing support with round-robin.

*) Feature: a "fallback" option that performs an alternative action if a
request can't be served from the "share" directory.

*) Feature: reduced memory consumption by dumping large request bodies
to disk.

*) Feature: stripping UTF-8 BOM and JavaScript-style comments from
uploaded JSON.

*) Bugfix: negative address matching in router might work improperly in
combination with non-negative patterns.

*) Bugfix: Java Spring applications failed to run; the bug had appeared
in 1.10.0.

*) Bugfix: PHP 7.4 was broken if it was built with thread safety
enabled.

*) Bugfix: compatibility issues with some Python applications.


To keep the finger on the pulse, see our further plans in the roadmap here:

- https://github.com/orgs/nginx/projects/1

Also, good news for macOS users! Now, there's a Homebrew tap for Unit:

- https://unit.nginx.org/installation/#homebrew

Stay healthy!

wbr, Valentin V. Bartenev

_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 12 Mar 2020 15:26:04 -0400
http://www.ldmicj.icu/read.php?27,287252,287252#msg-287252 [nginx-announce] njs-0.3.9 (no replies) http://www.ldmicj.icu/read.php?27,287252,287252#msg-287252
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release proceeds to extend the coverage of ECMAScript
specifications.

Notable new features:
- Promises API for "fs" module.
: var fs = require('fs').promises;
: fs.readFile('/file/path').then(data => r.return(200, data));

- detached r.subrequest(): Running a subrequest in the log phase
: nginx.conf:
: ...
: js_set $js_log js_log;
: ...
: log_format subrequest_log "...$js_log";
: access_log /log/path.log subrequest_log;
:
: nginx.js:
: function js_log(r) {
: r.subrequest('/_log', {detached:true});
: return '';
: }

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs
- Using node modules with njs:
http://nginx.org/en/docs/njs/node_modules.html

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel


Changes with njs 0.3.9 03 Mar 2020

nginx modules:

*) Feature: added detached mode for r.subrequest(). Responses to
detached subrequests are ignored. Unlike ordinary subrequests,
a detached subrequest can be created inside a variable handler.

Core:

*) Feature: added promises API for "fs" module.
Thanks to Artem S. Povalyukhin.

*) Feature: extended "fs" module. Added access(), symlink(), unlink(),
realpath() and friends.
Thanks to Artem S. Povalyukhin.

*) Improvement: introduced memory-efficient ordinary arrays.

*) Improvement: lexer refactoring.

*) Bugfix: fixed matching of native functions in backtraces.

*) Bugfix: fixed callback invocations in "fs" module.
Thanks to Artem S. Povalyukhin.

*) Bugfix: fixed Object.getOwnPropertySymbols().

*) Bugfix: fixed heap-buffer-overflow in njs_json_append_string().

*) Bugfix: fixed encodeURI() and decodeURI() according to
the specification.

*) Bugfix: fixed Number.prototype.toPrecision().

*) Bugfix: fixed handling of space argument in JSON.stringify().

*) Bugfix: fixed JSON.stringify() with Number() and String() objects.

*) Bugfix: fixed Unicode Escaping in JSON.stringify() according
to specification.

*) Bugfix: fixed non-native module importing.
Thanks to 洪志?(Hong Zhi Dao).

*) Bugfix: fixed njs.dump() with the Date() instance in a container.
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 03 Mar 2020 12:42:06 -0500
http://www.ldmicj.icu/read.php?27,287245,287245#msg-287245 [nginx-announce] nginx-1.17.9 (no replies) http://www.ldmicj.icu/read.php?27,287245,287245#msg-287245
*) Change: now nginx does not allow several "Host" request header lines.

*) Bugfix: nginx ignored additional "Transfer-Encoding" request header
lines.

*) Bugfix: socket leak when using HTTP/2.

*) Bugfix: a segmentation fault might occur in a worker process if OCSP
stapling was used.

*) Bugfix: in the ngx_http_mp4_module.

*) Bugfix: nginx used status code 494 instead of 400 if errors with code
494 were redirected with the "error_page" directive.

*) Bugfix: socket leak when using subrequests in the njs module and the
"aio" directive.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 03 Mar 2020 10:18:01 -0500
http://www.ldmicj.icu/read.php?27,286962,286962#msg-286962 [nginx-announce] unit-1.15.0 (no replies) http://www.ldmicj.icu/read.php?27,286962,286962#msg-286962
I'm glad to announce a new release of NGINX Unit.

This is mostly a bugfix release that eliminates a few nasty issues.
Also, it addresses incompatibilities caused by a minor API change in
the recently released major version of Ruby.


Changes with Unit 1.15.0 06 Feb 2020

*) Change: extensions of dynamically requested PHP scripts were
restricted to ".php".

*) Feature: compatibility with Ruby 2.7.

*) Bugfix: segmentation fault might have occurred in the router process
with multiple application processes under load; the bug had appeared
in 1.14.0.

*) Bugfix: receiving request body over TLS connection might have
stalled.


More features are planned for the next release that is expected in the
beginning of March. Among them are basic load balancing in the proxy module
and "try_files"-like functionality for more sophisticated request routing.

Stay tuned!

wbr, Valentin V. Bartenev

_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 06 Feb 2020 12:14:07 -0500
http://www.ldmicj.icu/read.php?27,286789,286789#msg-286789 [nginx-announce] njs-0.3.8 (no replies) http://www.ldmicj.icu/read.php?27,286789,286789#msg-286789
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release proceeds to extend the coverage of ECMAScript
specifications. This release adds Promise object support and
typed-arrays from ES6.

Notable new features:
- Promise support in r.subrequest():
: r.subrequest(r, '/auth')
: .then(reply => JSON.parse(reply.responseBody))
: .then(response => {
: if (!response['token']) {
: throw new Error("token is not available");
: }
: return token;
: })
: .then(token => {
: r.subrequest('/backend', `token=${token}`)
: .then(reply => r.return(reply.status, reply.responseBody));
: })
: .catch(_ => r.return(500));

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs
- Using node modules with njs:
http://nginx.org/en/docs/njs/node_modules.html

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel


Changes with njs 0.3.8 21 Jan 2020

nginx modules:

*) Feature: added Promise support for r.subrequest(). If callback
is not provided r.subrequest() returns an ordinary Promise object
that resolves to subrequest response object.

*) Change: r.parent property handler now returns "undefined"
instead of throwing exception if parent object is not available.

Core:

*) Feature: added Promise support. Implemented according to
the specification without: Promise.all(), Promise.allSettled(),
Promise.race().

*) Feature: added initial Typed-arrays support.
Thanks to Tiago Natel de Moura.

*) Feature: added ArrayBuffer support.
Thanks to Tiago Natel de Moura.

*) Feature: added initial Symbol support.
Thanks to Artem S. Povalyukhin.

*) Feature: added externals supopor for JSON.stringify().

*) Feature: added Object.is().
Thanks to Artem S. Povalyukhin.

*) Feature: added Object.setPrototypeOf().
Thanks to Artem S. Povalyukhin.

*) Feature: introduced nullish coalescing operator.
Thanks to Valentin Bartenev.

*) Bugfix: fixed Object.getPrototypeOf() according to the
specification.

*) Bugfix: fixed Object.prototype.valueOf() according to the
specification.

*) Bugfix: fixed JSON.stringify() with unprintable values and
replacer function.

*) Bugfix: fixed operator "in" according to the specification.

*) Bugfix: fixed Object.defineProperties() according to the
specification.

*) Bugfix: fixed Object.create() according to the specification.
Thanks to Artem S. Povalyukhin.

*) Bugfix: fixed Number.prototype.toString(radix) when
fast-math is enabled.

*) Bugfix: fixed RegExp() instance properties.

*) Bugfix: fixed import segfault.
Thanks to 洪志?(Hong Zhi Dao).
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 21 Jan 2020 11:50:00 -0500
http://www.ldmicj.icu/read.php?27,286783,286783#msg-286783 [nginx-announce] nginx-1.17.8 (no replies) http://www.ldmicj.icu/read.php?27,286783,286783#msg-286783
*) Feature: variables support in the "grpc_pass" directive.

*) Bugfix: a timeout might occur while handling pipelined requests in an
SSL connection; the bug had appeared in 1.17.5.

*) Bugfix: in the "debug_points" directive when using HTTP/2.
Thanks to Daniil Bondarev.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 21 Jan 2020 08:56:04 -0500
http://www.ldmicj.icu/read.php?27,286605,286605#msg-286605 [nginx-announce] unit-1.14.0 (no replies) http://www.ldmicj.icu/read.php?27,286605,286605#msg-286605
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
sources.

*) 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
ports.

*) 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.

- https://unit.nginx.org/installation/#docker-images

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
7 languages

- Advanced internal request routing that allows to filter requests by various
parameters, including: URI, header fields, arguments, cookies, addresses,
and ports

- 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
packages

- 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

_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Fri, 27 Dec 2019 08:42:01 -0500
http://www.ldmicj.icu/read.php?27,286566,286566#msg-286566 [nginx-announce] nginx-1.17.7 (no replies) http://www.ldmicj.icu/read.php?27,286566,286566#msg-286566
*) 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
0.7.12.

*) 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.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 24 Dec 2019 10:16:10 -0500
http://www.ldmicj.icu/read.php?27,286262,286262#msg-286262 [nginx-announce] njs-0.3.7 (no replies) http://www.ldmicj.icu/read.php?27,286262,286262#msg-286262
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release proceeds to extend the coverage of ECMAScript
specifications.

Notable new features:

- Object.assign() method:
: > var obj = { a: 1, b: 2 }
: undefined
: > var copy = Object.assign({}, obj)
: undefined
: > console.log(copy)
: {a:1,b:2}

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel


Changes with njs 0.3.7 19 Nov 2019

nginx modules:

*) Improvement: refactored iteration over external objects.

Core:

*) Feature: added Object.assign().

*) Feature: added Array.prototype.copyWithin().

*) Feature: added support for labels in console.time().

*) Change: removed console.help() from CLI.

*) Improvement: moved constructors and top-level objects to
global object.

*) Improvement: arguments validation for configure script.

*) Improvement: refactored JSON methods.

*) Bugfix: fixed heap-buffer-overflow in njs_array_reverse_iterator()
function. The following functions were affected:
Array.prototype.lastIndexOf(), Array.prototype.reduceRight().

*) Bugfix: fixed [[Prototype]] slot of NativeErrors.

*) Bugfix: fixed NativeError.prototype.message properties.

*) Bugfix: added conversion of "this" value to object in
Array.prototype functions.

*) Bugfix: fixed iterator for Array.prototype.find() and
Array.prototype.findIndex() functions.

*) Bugfix: fixed Array.prototype.includes() and
Array.prototype.join() with "undefined" argument.

*) Bugfix: fixed "constructor" property of "Hash" and "Hmac"
objects.

*) Bugfix: fixed "__proto__" property of getters and setters.

*) Bugfix: fixed "Date" object string formatting.

*) Bugfix: fixed handling of NaN and -0 arguments in Math.min()
and Math.max().

*) Bugfix: fixed Math.round() according to the specification.

*) Bugfix: reimplemented "bound" functions according to
the specification.
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 19 Nov 2019 09:48:07 -0500
http://www.ldmicj.icu/read.php?27,286258,286258#msg-286258 [nginx-announce] nginx-1.17.6 (no replies) http://www.ldmicj.icu/read.php?27,286258,286258#msg-286258
*) Feature: the $proxy_protocol_server_addr and
$proxy_protocol_server_port variables.

*) Feature: the "limit_conn_dry_run" directive.

*) Feature: the $limit_req_status and $limit_conn_status variables.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 19 Nov 2019 09:34:08 -0500
http://www.ldmicj.icu/read.php?27,286211,286211#msg-286211 [nginx-announce] unit-1.13.0 (no replies) http://www.ldmicj.icu/read.php?27,286211,286211#msg-286211
I'm glad to announce a new release of NGINX Unit.

This release expands Unit's functionality as a generic web server by
introducing basic HTTP reverse proxying.

See the details in our documentation:

- https://unit.nginx.org/configuration/#proxying

Compared to mature proxy servers and load balancers, Unit's proxy features
are limited now, but we'll continue the advance.

Also, this release improves the user experience for Python and Ruby modules and
remediates compatibility issues with existing applications in these languages.

Our long-term goal is to turn Unit into the ultimate high-performance building
block that will be helpful and easy to use with web services of any kind. To
accomplish this, Unit's future releases will focus on the following aspects:

- security, isolation, and DoS protection
- ability to run various types of dynamic applications
- connectivity with load balancing and fault tolerance
- efficient serving of static media assets
- statistics and monitoring


Changes with Unit 1.13.0 14 Nov 2019

*) Feature: basic support for HTTP reverse proxying.

*) Feature: compatibility with Python 3.8.

*) Bugfix: memory leak in Python application processes when the close
handler was used.

*) Bugfix: threads in Python applications might not work correctly.

*) Bugfix: Ruby on Rails applications might not work on Ruby 2.6.

*) Bugfix: backtraces for uncaught exceptions in Python 3 might be
logged with significant delays.

*) Bugfix: explicit setting a namespaces isolation option to false might
have enabled it.


Please feel free to share your experiences and ideas on GitHub:

- https://github.com/nginx/unit/issues

Or via Unit mailing list:

- https://mailman.nginx.org/mailman/listinfo/unit

wbr, Valentin V. Bartenev

_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Valentin V. Bartenev Nginx Announcements - English Thu, 14 Nov 2019 13:34:14 -0500
http://www.ldmicj.icu/read.php?27,285971,285971#msg-285971 [nginx-announce] njs-0.3.6 (no replies) http://www.ldmicj.icu/read.php?27,285971,285971#msg-285971
I'm glad to announce a new release of NGINX JavaScript module (njs).

This release proceeds to extend the coverage of ECMAScript
specifications.

Notable new features:

- Function constructor:
: > var sum = new Function('a, b', 'return a + b');
: undefined
: > sum(2, 3)
: 5

You can learn more about njs:

- Overview and introduction: http://nginx.org/en/docs/njs/
- Presentation: https://youtu.be/Jc_L6UffFOs

Feel free to try it and give us feedback on:

- Github: https://github.com/nginx/njs/issues
- Mailing list: http://mailman.nginx.org/mailman/listinfo/nginx-devel

Changes with njs 0.3.6 22 Oct 2019

nginx modules:

*) Improvement: getting special headers from r.headersIn.

Core:

*) Feature: added new Function() support.

*) Feature: added Number.prototype.toFixed().

*) Feature: added Number.prototype.toPrecision().

*) Feature: added Number.prototype.toExponential().

*) Improvement: making "prototype" property of function
instances writable.

*) Improvement: limiting recursion depth while compiling.

*) Improvement: moving global functions to the global object.

*) Bugfix: fixed prototype mutation for object literals.

*) Bugfix: fixed heap-buffer-overflow while parsing regexp literals.

*) Bugfix: fixed integer-overflow while parsing exponent
of number literals.

*) Bugfix: fixed parseFloat().

*) Bugfix: fixed Array.prototype functions according to the
specification.
The following functions were fixed: every, includes, indexOf,
filter,
find, findIndex, forEach, lastIndexOf, map, pop, push, reduce,
reduceRight, shift, some, unshift.

*) Bugfix: fixed handing of accessor descriptors in Object.freeze().

*) Bugfix: fixed String.prototype.replace() when first argument
is not a string.

*) Bugfix: fixed stack-use-after-scope in Array.prototype.map().

*) Bugfix: Date.prototype.toUTCString() format was aligned to ES9.

*) Bugfix: fixed buffer overflow in Number.prototype.toString(radix).

*) Bugfix: fixed Regexp.prototype.test() for regexps with
backreferences.

*) Bugfix: fixed Array.prototype.map() for objects with nonexistent
values.

*) Bugfix: fixed Array.prototype.pop() and shift() for sparse objects.

*) Bugfix: fixed Date.UTC() according to the specification.

*) Bugfix: fixed Date() constructor according to the specification.

*) Bugfix: fixed type of Date.prototype.
Thanks to Artem S. Povalyukhin.

*) Bugfix: fixed Date.prototype.setTime().
Thanks to Artem S. Povalyukhin.

*) Bugfix: fixed default number of arguments expected by built-in
functions.

*) Bugfix: fixed "caller" and "arguments" properties of a function
instance.
Thanks to Artem S. Povalyukhin.
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Dmitry Volyntsev Nginx Announcements - English Tue, 22 Oct 2019 11:50:07 -0400
http://www.ldmicj.icu/read.php?27,285967,285967#msg-285967 [nginx-announce] nginx-1.17.5 (no replies) http://www.ldmicj.icu/read.php?27,285967,285967#msg-285967
*) Feature: now nginx uses ioctl(FIONREAD), if available, to avoid
reading from a fast connection for a long time.

*) Bugfix: incomplete escaped characters at the end of the request URI
were ignored.

*) Bugfix: "/." and "/.." at the end of the request URI were not
normalized.

*) Bugfix: in the "merge_slashes" directive.

*) Bugfix: in the "ignore_invalid_headers" directive.
Thanks to Alan Kemp.

*) Bugfix: nginx could not be built with MinGW-w64 gcc 8.1 or newer.


--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-announce mailing list
nginx-announce@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-announce]]>
Maxim Dounin Nginx Announcements - English Tue, 22 Oct 2019 11:36:01 -0400
Žɳ1005app