From mdounin at mdounin.ru Tue Jan 21 13:54:53 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 21 Jan 2020 16:54:53 +0300 Subject: [nginx-announce] nginx-1.17.8 Message-ID: <20200121135453.GY12894@mdounin.ru> Changes with nginx 1.17.8 21 Jan 2020 *) 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/ From xeioex at nginx.com Tue Jan 21 16:49:10 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Tue, 21 Jan 2020 19:49:10 +0300 Subject: [nginx-announce] njs-0.3.8 Message-ID: <877a6c70-7f09-fdc2-2657-ab9d36686b3f@nginx.com> Hello, 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). From vbart at nginx.com Thu Feb 6 17:12:29 2020 From: vbart at nginx.com (Valentin V. Bartenev) Date: Thu, 06 Feb 2020 20:12:29 +0300 Subject: [nginx-announce] unit-1.15.0 Message-ID: <1854785.ok0gUbMDia@vbart-workstation> Hi, 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 From mdounin at mdounin.ru Tue Mar 3 15:16:13 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 3 Mar 2020 18:16:13 +0300 Subject: [nginx-announce] nginx-1.17.9 Message-ID: <20200303151613.GQ12894@mdounin.ru> Changes with nginx 1.17.9 03 Mar 2020 *) 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/ From xeioex at nginx.com Tue Mar 3 17:40:08 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Tue, 3 Mar 2020 20:40:08 +0300 Subject: [nginx-announce] njs-0.3.9 Message-ID: Hello, 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. From vbart at nginx.com Thu Mar 12 19:25:54 2020 From: vbart at nginx.com (Valentin V. Bartenev) Date: Thu, 12 Mar 2020 22:25:54 +0300 Subject: [nginx-announce] unit-1.16.0 Message-ID: <1836863.CK0NIbx4q1@vbart-workstation> Hi, 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 From mdounin at mdounin.ru Tue Apr 14 14:34:21 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 14 Apr 2020 17:34:21 +0300 Subject: [nginx-announce] nginx-1.17.10 Message-ID: <20200414143421.GL20357@mdounin.ru> Changes with nginx 1.17.10 14 Apr 2020 *) Feature: the "auth_delay" directive. -- Maxim Dounin http://nginx.org/ From vbart at nginx.com Thu Apr 16 18:14:38 2020 From: vbart at nginx.com (Valentin V. Bartenev) Date: Thu, 16 Apr 2020 21:14:38 +0300 Subject: [nginx-announce] unit-1.17.0 Message-ID: <1787401.taCxCBeP46@vbart-laptop> Hi, 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 From mdounin at mdounin.ru Tue Apr 21 14:44:58 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 21 Apr 2020 17:44:58 +0300 Subject: [nginx-announce] nginx-1.18.0 Message-ID: <20200421144458.GV20357@mdounin.ru> Changes with nginx 1.18.0 21 Apr 2020 *) 1.18.x stable branch. -- Maxim Dounin http://nginx.org/ From xeioex at nginx.com Thu Apr 23 16:10:38 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Thu, 23 Apr 2020 19:10:38 +0300 Subject: [nginx-announce] njs-0.4.0 Message-ID: <0D094862-CF66-4162-8005-F88F7DC320DA@nginx.com> Hello, 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=/? : ]; : : 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? 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?. From xeioex at nginx.com Tue May 19 14:25:24 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Tue, 19 May 2020 17:25:24 +0300 Subject: [nginx-announce] njs-0.4.1 Message-ID: Hello, 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: : /// : 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. -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Tue May 26 15:09:08 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 26 May 2020 18:09:08 +0300 Subject: [nginx-announce] nginx-1.19.0 Message-ID: <20200526150908.GI12747@mdounin.ru> Changes with nginx 1.19.0 26 May 2020 *) 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/ From vbart at nginx.com Thu May 28 22:17:17 2020 From: vbart at nginx.com (Valentin V. Bartenev) Date: Fri, 29 May 2020 01:17:17 +0300 Subject: [nginx-announce] unit-1.18.0 Message-ID: <1822371.PYKUYFuaPT@vbart-laptop> Hi, 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 From mdounin at mdounin.ru Tue Jul 7 16:11:09 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 7 Jul 2020 19:11:09 +0300 Subject: [nginx-announce] nginx-1.19.1 Message-ID: <20200707161109.GO12747@mdounin.ru> Changes with nginx 1.19.1 07 Jul 2020 *) 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/ From xeioex at nginx.com Tue Jul 7 19:26:31 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Tue, 7 Jul 2020 22:26:31 +0300 Subject: [nginx-announce] njs-0.4.2 Message-ID: <2bcb28c8-6f30-bf6b-9ffe-db6b73f0af27@nginx.com> Hello, 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. -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Tue Aug 11 15:11:56 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 11 Aug 2020 18:11:56 +0300 Subject: [nginx-announce] nginx-1.19.2 Message-ID: <20200811151156.GU12747@mdounin.ru> Changes with nginx 1.19.2 11 Aug 2020 *) 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/ From xeioex at nginx.com Tue Aug 11 17:27:36 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Tue, 11 Aug 2020 20:27:36 +0300 Subject: [nginx-announce] njs-0.4.3 Message-ID: Hello, 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. From vbart at nginx.com Thu Aug 13 21:13:42 2020 From: vbart at nginx.com (Valentin V. Bartenev) Date: Fri, 14 Aug 2020 00:13:42 +0300 Subject: [nginx-announce] unit-1.19.0 Message-ID: <1755628.tdWV9SEqCh@vbart-laptop> Hi, 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 From mdounin at mdounin.ru Tue Sep 29 14:46:14 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 29 Sep 2020 17:46:14 +0300 Subject: [nginx-announce] nginx-1.19.3 Message-ID: <20200929144614.GE1136@mdounin.ru> Changes with nginx 1.19.3 29 Sep 2020 *) 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/ From xeioex at nginx.com Tue Sep 29 17:32:36 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Tue, 29 Sep 2020 20:32:36 +0300 Subject: [nginx-announce] njs-0.4.4 Message-ID: <77d03d63-dcbf-3d5b-0a25-8444d20afb1f@nginx.com> Hello, 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. From vbart at nginx.com Thu Oct 8 21:18:43 2020 From: vbart at nginx.com (Valentin V. Bartenev) Date: Fri, 09 Oct 2020 00:18:43 +0300 Subject: [nginx-announce] unit-1.20.0 Message-ID: <2004948.OBFZWjSADL@vbart-laptop> Hi, 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 From mdounin at mdounin.ru Tue Oct 27 15:26:13 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 27 Oct 2020 18:26:13 +0300 Subject: [nginx-announce] nginx-1.19.4 Message-ID: <20201027152613.GE50919@mdounin.ru> Changes with nginx 1.19.4 27 Oct 2020 *) 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/ From vbart at nginx.com Thu Nov 19 23:37:12 2020 From: vbart at nginx.com (Valentin V. Bartenev) Date: Fri, 20 Nov 2020 02:37:12 +0300 Subject: [nginx-announce] unit-1.21.0 Message-ID: <8729525.rMLUfLXkoz@vbart-laptop> Hi, 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 From mdounin at mdounin.ru Tue Nov 24 15:19:12 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 24 Nov 2020 18:19:12 +0300 Subject: [nginx-announce] nginx-1.19.5 Message-ID: <20201124151912.GM1147@mdounin.ru> Changes with nginx 1.19.5 24 Nov 2020 *) Feature: the -e switch. *) Feature: the same source files can now be specified in different modules while building addon modules. *) Bugfix: SSL shutdown did not work when lingering close was used. *) Bugfix: "upstream sent frame for closed stream" errors might occur when working with gRPC backends. *) Bugfix: in request body filters internal API. -- Maxim Dounin http://nginx.org/ From xeioex at nginx.com Wed Dec 2 10:54:06 2020 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Wed, 2 Dec 2020 13:54:06 +0300 Subject: [nginx-announce] njs-0.5.0 Message-ID: Hello, I'm glad to announce a new release of NGINX JavaScript module (njs). This release focuses mostly on adding Buffer support in nginx modules. Buffer is a better alternative to string when working with arbitrary data and especially with binary protocols, because JavaScript strings operate on characters, not bytes. A character may take up to 4 bytes in UTF-8. The new Buffer properties are not designed to replace the string ones, but to be a better alternative for binary use cases. Notable new features: - r.rawVariables (nginx variables as a Buffer): : function is_local(r) { :??? return r.rawVariables.binary_remote_addr :?????????? .equals(Buffer.from([127,0,0,1])); : } - r.requestBuffer (request body as a Buffer): For a request with the following request body: ??? '{"a":{"b":"BAR"}}' : function get_slice_of_req_body(r) { :???? var body = r.requestBuffer; :???? var view = new DataView(body.buffer, 5, 11); :???? r.return(200, view); : } The response body will be: ??? '{"b":"BAR"}' - s.on() events now support new callbacks which receive data chuck as Buffer, this is especially useful for binary protocols. You can learn more about njs: - Overview and introduction: http://nginx.org/en/docs/njs/ - Using Babel to transpile JS code >= ES6 for njs https://github.com/jirutka/babel-preset-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.5.0???????????????????????????????????????? 01 Dec 2020 ??? nginx modules: ??? *) Feature: introduced global "ngx" object. ?????? The following methods were added: ???????? ngx.log(level, msg) ?????? The following properties were added: ???????? ngx.INFO, ???????? ngx.WARN, ???????? ngx.ERR. ??? *) Feature: added support for Buffer object where string ?????? is expected. ??? *) Feature: added Buffer version of existing properties. ?????? The following properties were added: ?????? r.requestBuffer (r.requestBody), ?????? r.responseBuffer (r.responseBody), ?????? r.rawVariables (r.variables), ?????? s.rawVariables (s.variables). ?????? The following events were added in stream module: ?????? upstream (upload), ?????? downstream (download). ??? *) Improvement: added aliases to existing properties. ?????? The following properties were added: ?????? r.requestText (r.requestBody), ?????? r.responseText (r.responseBody). ??? *) Improvement: throwing an exception in r.internalRedirect() ?????? for a subrequest. ??? *) Bugfix: fixed promise r.subrequest() with error_page redirect. ??? *) Bugfix: fixed promise events handling. ??? Core: ??? *) Feature: added TypeScript definitions for builtin ?????? modules. ?????? Thanks to Jakub Jirutka. ??? *) Feature: tracking unhandled promise rejection. ??? *) Feature: added initial iterator support. ?????? Thanks to Artem S. Povalyukhin. ??? *) Improvement: TypeScript definitions are refactored. ?????? Thanks to Jakub Jirutka. ??? *) Improvement: added forgotten support for ?????? Object.prototype.valueOf() in Buffer.from(). ??? *) Bugfix: fixed heap-use-after-free in JSON.parse(). ??? *) Bugfix: fixed heap-use-after-free in JSON.stringify(). ??? *) Bugfix: fixed JSON.stringify() for arrays resizable via ?????? getters. ??? *) Bugfix: fixed heap-buffer-overflow for ?????? RegExp.prototype[Symbol.replace]. ??? *) Bugfix: fixed returned value for Buffer.prototype.write* ?????? functions. ??? *) Bugfix: fixed querystring.stringify(). ?????? Thanks to Artem S. Povalyukhin. ??? *) Bugfix: fixed the catch handler for ?????? Promise.prototype.finally(). ??? *) Bugfix: fixed querystring.parse(). From mdounin at mdounin.ru Tue Dec 15 14:59:55 2020 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 15 Dec 2020 17:59:55 +0300 Subject: [nginx-announce] nginx-1.19.6 Message-ID: <20201215145955.GU1147@mdounin.ru> Changes with nginx 1.19.6 15 Dec 2020 *) Bugfix: "no live upstreams" errors if a "server" inside "upstream" block was marked as "down". *) Bugfix: a segmentation fault might occur in a worker process if HTTPS was used; the bug had appeared in 1.19.5. *) Bugfix: nginx returned the 400 response on requests like "GET http://example.com?args HTTP/1.0". *) Bugfix: in the ngx_http_flv_module and ngx_http_mp4_module. Thanks to Chris Newton. -- Maxim Dounin http://nginx.org/