From vbart at nginx.com Thu Feb 4 23:12:08 2021 From: vbart at nginx.com (Valentin V. Bartenev) Date: Fri, 05 Feb 2021 02:12:08 +0300 Subject: [nginx-announce] unit-1.22.0 Message-ID: <3963972.1IzOArtZ34@vbart-laptop> 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/installation/#installation-src-startup ### 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 From mdounin at mdounin.ru Tue Feb 16 16:12:39 2021 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 16 Feb 2021 19:12:39 +0300 Subject: [nginx-announce] nginx-1.19.7 Message-ID: <20210216161239.GH77619@mdounin.ru> Changes with nginx 1.19.7 16 Feb 2021 *) Change: connections handling in HTTP/2 has been changed to better match HTTP/1.x; the "http2_recv_timeout", "http2_idle_timeout", and "http2_max_requests" directives have been removed, the "keepalive_timeout" and "keepalive_requests" directives should be used instead. *) Change: the "http2_max_field_size" and "http2_max_header_size" directives have been removed, the "large_client_header_buffers" directive should be used instead. *) Feature: now, if free worker connections are exhausted, nginx starts closing not only keepalive connections, but also connections in lingering close. *) Bugfix: "zero size buf in output" alerts might appear in logs if an upstream server returned an incorrect response during unbuffered proxying; the bug had appeared in 1.19.1. *) Bugfix: HEAD requests were handled incorrectly if the "return" directive was used with the "image_filter" or "xslt_stylesheet" directives. *) Bugfix: in the "add_trailer" directive. -- Maxim Dounin http://nginx.org/ From xeioex at nginx.com Tue Feb 16 18:07:58 2021 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Tue, 16 Feb 2021 21:07:58 +0300 Subject: [nginx-announce] njs-0.5.1 Message-ID: <182c1d6d-9ff4-6a96-c6f7-8e3acee3f0d9@nginx.com> Hello, I'm glad to announce a new release of NGINX JavaScript module (njs). This release focuses on extending the modules functionality. Notable new features: - ngx.fetch() method implements a generic HTTP client which does not depend on subrequests: : example.js: : function fetch(r) { : ngx.fetch('http://nginx.org/') : .then(reply => reply.text()) : .then(body => r.return(200, body)) : .catch(e => r.return(501, e.message)); : } - js_header_filter directive. The directive allows changing arbitrary header fields of a response header. : nginx.conf: : js_import foo.js; : : location / { : js_header_filter foo.filter; : proxy_passhttp://127.0.0.1:8081/; : } : : foo.js: : function filter(r) { : var cookies = r.headersOut['Set-Cookie']; : var len = r.args.len ? Number(r.args.len) : 0; : r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); : } : : export default {filter}; 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.5.1 16 Feb 2021 nginx modules: *) Feature: introduced ngx.fetch() method implementing Fetch API. The following init options are supported: body, headers, buffer_size (nginx specific), max_response_body_size (nginx specific), method. The following properties and methods of Response object are implemented: arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type, url. The following properties and methods of Header object are implemented: get(), getAll(), has(). Notable limitations: only the http:// scheme is supported, redirects are not handled. In collaboration with ??? (Hong Zhi Dao). *) Feature: added the "js_header_filter" directive. *) Bugfix: fixed processing buffered data in body filter in stream module. Core: *) Bugfix: fixed safe mode bypass in Function constructor. *) Bugfix: fixed Date.prototype.toISOString() with invalid date values. -------------- next part -------------- An HTML attachment was scrubbed... URL: