OpenResty 1.9.7.2 released

Hi folks

I am happy to announce the new formal release, 1.9.7.2, of the
OpenResty web platform based on NGINX and Lua:

https://openresty.org/#Download

Both the (portable) source code distribution and the Win32 binary
distribution are provided on this Download page.

This version is an important milestone in OpenResty’s release history
and we have the following 3 big features included in the bundle:

  1. ngx_lua’s new directives ssl_certificate_by_lua* directives that
    allow dynamic control of the downstream SSL/TLS handshake of NGINX
    with Lua. Nonblocking I/O operations on the Lua land like cosockets
    and “light threads” are also available in this context. This feature
    has been powering CloudFlare’s SSL gateway for more than a year now.
    Thanks CloudFlare for supporting this work.

See the official documentation of these features for more details:

GitHub - openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers

https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/ssl.md#readme

https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/ocsp.md#readme

  1. ngx_lua’s new ngx.semaphore API contributed by Kugou Inc., which
    allows very efficient “light thread” control flow synchronizations
    across the request and context boundaries (though still limited to a
    single NGINX worker process). This feature also plays an important
    role in their engineers’ C2000K experiment atop OpenResty.

See the corresponding documentation for more details:

https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/semaphore.md#readme

  1. ngx_lua’s new balancer_by_lua* directives that allow highly dynamic
    upstream peer selections and retries in pure Lua, making dynamic
    custom load balancers written in Lua possible. Such mechanism is based
    upon NGINX core’s upstream facility, which can work with existing
    nginx upstream C modules like ngx_proxy and ngx_fastcgi, out of the
    box. Thanks CloudFlare for supporting this work.

See the corresponding documentation for more details:

GitHub - openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers

https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/balancer.md#readme

Special thanks go to all our contributors and users.

Changes since the last (formal) release, 1.9.7.1:

  • feature: applied the ssl_cert_cb_yield patch to the bundled
    version of the NGINX core to allow yielding in OpenSSL’s
    SSL_CTX_set_cert_cb() callbacks (needed by the ngx_lua module’s
    ssl_certificate_by_lua* directives, for example).

  • bugfix: the “./configure” options “–with-dtrace-probes” and
    “–with-stream” did not work together and led to compilation
    failures.

  • upgraded the ngx_lua module to 0.10.0.

    • feature: better SSL/TLS handshake control.

      • implemented the ssl_certificate_by_lua_block and
        ssl_certifcate_by_lua_file directives for controlling
        the NGINX downstream SSL handshake dynamically with Lua.
        thanks Piotr S., Zi Lin, yejingx, and others for the
        help.

      • added an optional “send_status_req” argument to
        stream-typed cosockets’ sslhandshake() method to send
        OCSP status request.

    • feature: implemented the balancer_by_lua_block and
      balancer_by_lua_file directives to allow NGINX load
      balancers written in Lua. thanks Shuxin Yang, Dejiang Zhu,
      Brandon Beveridge, and others for the help.

    • feature: added pure C API for the ngx.semaphore Lua module
      implemented in lua-resty-core. this ngx.semaphore API
      provides efficient synchronization among “light threads”
      across request/context boundaries. thanks Weixie Cui and
      Dejiang Zhu from Kugou Inc. for contributing this feature.
      also thanks Kugou Inc. for supporting this work.

    • doc: made clear the ngx.ctx scoping issues. thanks Robert
      Paprocki for asking.

    • doc: typo fix for the contexts of ngx.worker.id. thanks
      RocFang for the patch.

  • upgraded the lua-resty-core library to 0.1.4.

    • feature: added new Lua modules ngx.ssl and ngx.ocsp. these
      two modules provide Lua API mostly useful in the context of
      the ngx_lua module’s ssl_certificiate_by_lua*. thanks Piotr
      Sikora, Zi Lin, yejingx, Aapo Talvensaari, and others for
      the help.

    • feature: implemented the ngx.balancer Lua module to support
      dynamic nginx upstream balancers written in Lua. the
      ngx.balancer module is expected to be used in
      the ngx_lua module’s balancer_by_lua* context. thanks Shuxin
      Yang, Aapo Talvensaari, and Guanlan Dai for the help.

    • feature: feature: added new Lua module, ngx.semaphore. this
      ngx.semaphore API provides efficient synchronization among
      “light threads” across request/context boundaries. thanks
      Weixie Cui and Dejiang Zhu from Kugou Inc. for contributing
      this feature. Also thanks Kugou Inc. for supporting this
      work.

  • upgraded LuaJIT to v2.1-20160108:
    Tags · openresty/luajit2 · GitHub

    • imported Mike Pall’s latest changes:

      • FFI: properly unsink non-standard cdata allocations.

      • ARM: added external frame unwinding. thanks to Nick
        Zavaritsky.

      • MIPS soft-float support. contributed by Djordje
        Kovacevic and Stefan Pejic from RT-RK.com. sponsored by
        Cisco Systems, Inc.

        • added soft-float support to interpreter.

        • added soft-float FFI 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

Enjoy!
-agentzh