Hi folks
I am happy to announce the new formal release, 1.9.7.4, of the
OpenResty web platform based on NGINX and LuaJIT:
https://openresty.org/#Download
Both the (portable) source code distribution and the Win32 binary
distribution are provided on this Download page.
The highlights of this version are
-
New Lua API functions for reverse DNS queries in the lua-resty-dns
library. -
New options to insert custom nginx.conf configuration snippets in
the “resty” command-line utility. -
Various important bug fixes in recently-added new features like
balancer_by_lua* and ssl_certificate_by_lua*.
Special thanks go to all our developers and contributors!
Complete change log since the last (formal) release, 1.9.7.3:
-
bugfix: “./configure”: use of relative paths like “./nginx” in
“–prefix=PATH” led to compilation errors. thanks Tao Huang for
the report. -
upgraded the ngx_lua module to 0.10.2.
-
feature: the C implementation for set SSL private keys now
supports non-RSA private keys as well. thanks Alessandro
Ghedini for the patch. -
feature: ngx.log() and print() now accept Lua tables with
the “__tostring” metamethod. -
feature: added new API, ngx.config.subsystem, which always
takes the Lua string value “http” in this module. -
feature: added new API function ngx.socket.stream() which is
an alias to ngx.socket.tcp(). -
feature: added HTTP 2.0 support to ngx.req.http_version().
-
feature: this module can now be built as a “dynamic module”
with NGINX 1.9.11+ via the “–add-dynamic-module=PATH”
option of “./configure”. -
bugfix: balancer_by_lua* did not respect “lua_code_cache
off”. thanks XI WANG for the report and Dejiang Zhu for the
patch. -
bugfix: hot loop might happen when balancer_by_lua* was used
with the keepalive directive. thanks GhostZch for the
report. -
bugfix: balancer_by_lua* might crash the nginx worker when
SSL (https) is used for upstream connections. thanks
Alistair Wooldrige for the report. -
bugfix: stream-typed cosockets: we did not set the “error”
field of the “ngx_connection_t” object which MIGHT lead to
socket leaks. -
bugfix: avoided a potential memory issue when the request
handler is aborted prematurely (via ngx.exit, for example)
while a light thread is still waiting on ngx.flush(true). -
bugfix: we might not respond to client abort events when
lua_check_client_abort is on. -
bugfix: fixed the compiler warning “unused variable” when
compiling with nginx cores older than 1.7.5 (exclusive).
thanks Marc Neudert for the patch. -
bugfix: fixed compilation errors with LibreSSL by disabling
ssl_certificiate_by_lua* and some ngx.ssl API functions that
are not supported by LibreSSL. thanks George Liu and Bret
for the reports. -
bugfix: fixed compilation errors with nginx 1.9.11+. thanks
Charles R. Portwood II and Tomas Kvasnicka for the reports. -
bugfix: fixed compatibility issues with other nginx modules
loaded as “dynamic modules” in NGINX 1.9.11+. -
bugfix: SSL: set error message on “i2d_X509()” failure as
well. thanks Alessandro Ghedini for the patch. -
bugfix: SSL: remove leading white space from error messages.
thanks Alessandro Ghedini for the patch. -
optimize: use “lua_pushliteral()” for string literals.
thanks Tatsuhiko Kubo for the patch. -
change: unmatched submatch captures are now set to “false”
instead of “nil” in the captures table (named captures are
not affected). thanks Julien Desgats for the patch. -
change: ngx.req.get_post_args: returns error message instead
of raising an exception when request body is in temp file.
thanks yejingx for the patch. -
change: ngx.shared.DICT: throws a Lua error when the
“exptime” argument is invalid. -
doc: documented that ngx.req.get_body_data() is available in
the context of log_by_lua*. thanks YuanSheng Wang for the
patch. -
doc: added balancer_by_lua* and ssl_certificate_by_lua* to
the context of some Lua API functions. thanks Dejiang Zhu
for the patch. -
doc: fixed the documentation of log_by_lua* which actually
runs after nginx’s access log handler. -
doc: updated the documentation for ngx.req.discard_body() to
reflect recent changes. now ignoring request bodies indeed
trigger discarding the body upon request finalization. -
doc: updated the docs of ngx.get_phase() for new Lua
execution contexts. thanks Thibault Charbonnier for the
patches. -
doc: typo fix in sample configurations from othree.
-
doc: typo fix in sample configurations from Adam Malone.
-
doc: typo fix from Prayag Verma.
-
doc: typo fix from leemingtian.
-
-
upgraded the lua-resty-core library to 0.1.5.
-
optimize: ngx.ssl: removed unnecessary request checks from
the priv_key_pem_to_der and cert_pem_to_der functions to
allow them to be used in more contexts. thanks Tom Thorogood
for the patch. -
bugfix: resty.core.regex: non-string values passed as string
arguments might throw out Lua errors. thanks Robert P.
for the patch. -
change: resty.core.shdict: throws out a Lua error when the
exptime arg is invalid. -
change: resty.core.regex: unmatched submatch captures are
set to “false” instead of “nil” in captures table. thanks
Julien Desgats for the patch. -
doc: typo fix from thefosk.
-
doc: typo fix from Anton Ovchinnikov.
-
-
upgraded the ngx_lua_upstream module to 0.05.
-
feature: expose peer connection count as the “conns” Lua
table field. thanks Justin Li for the patch. -
feature: this module can now be built as a “dynamic module”
with NGINX 1.9.11+ via the “–add-dynamic-module=PATH”
option of “./configure”. thanks Hiroaki Nakamura for the
original patch. -
doc: fixes from Justin Li.
-
-
upgraded the lua-resty-upstream-healthcheck library to 0.04.
-
feature: added IPv6 address support in upstream peer names.
thanks szelcsanyi for the patch. -
feature: status_page(): now we mark those upstream blocks
without any (live) health checkers so as to avoid potential
confusions when the checker light threads were aborted due
to some fatal errors. -
refactor: various coding refactoring to improve code
readability. thanks Thijs Schreijer and Dejiang Zhu for the
patches. -
optimize: minor Lua code improvements from Aapo Talvensaari.
-
doc: link fixes from Thijs Schreijer.
-
doc: fixed escaping issues in the configuration samples in
the Synopsis section by migrating to the “*_by_lua_block {}”
directives. thanks whatacold for the report.
-
-
upgraded the lua-resty-dns library to 0.15.
- feature: added reverse DNS utilities: reverse_query,
arpa_str, and expand_ipv6_addr. thanks bjoe2k4 for the
patch.
- feature: added reverse DNS utilities: reverse_query,
-
upgraded resty-cli to 0.06.
- feature: resty: added new options “–http-include=PATH” and
“–main-include=PATH” to include user files in the
auto-generated “nginx.conf” file. thanks Nils Nordman for
the patch.
- feature: resty: added new options “–http-include=PATH” and
-
upgraded the ngx_set_misc module to 0.30.
-
feature: this module can now be compiled as a dynamic module
with NGINX 1.9.11+ via the “–with-dynamic-module=PATH”
option of “./configure”. -
bugfix: fixed errors and warnings with C compilers without
variadic macro support.
-
-
upgraded the ngx_array_var module to 0.05.
-
feature: this module can now be compiled as a dynamic module
with NGINX 1.9.11+ via the “–with-dynamic-module=PATH”
option of “./configure”. -
bugfix: fixed errors and warnings with C compilers without
variadic macro support.
-
The HTML version of the change log with lots of helpful hyper-links
can be browsed here:
https://openresty.org/#ChangeLog1009007
OpenResty (aka. ngx_openresty) is a full-fledged web platform
by bundling the standard Nginx core, Lua/LuaJIT, lots of
3rd-party Nginx modules and Lua libraries, as well as most of their
external
dependencies. See OpenResty’s homepage for details:
https://openresty.org/
We have run extensive testing on our Amazon EC2 test cluster and
ensured that all the components (including the Nginx core) play well
together. The latest test report can always be found here:
https://qa.openresty.org
Have fun!
-agentzh