Ngx_openresty devel version 1.2.8.1 released

Hello guys!

I am excited to announce that the new development version of
ngx_openresty, 1.2.8.1, is now released:

http://openresty.org/#Download

Special thanks go to all our contributors and users for helping make
this release happen!

Below is the complete change log for this release, as compared to the
last (stable) release, 1.2.7.6:

  • upgraded the Nginx core to 1.2.8.

  • upgraded LuaNginxModule to 0.8.1.

    • feature: implemented the new timer API: the ngx.timer.at Lua
      function and two configure directives lua_max_pending_timers
      and lua_max_running_timers. thanks Matthieu T. for
      requesting this feature.

    • feature: added the “U” regex option to the ngx.re API to
      mean enabling the UTF-8 matching mode but disabling UTF-8
      validity check on the subject strings. thanks Lance Li for
      the patch.

    • bugfix: setting ngx.header.etag could not affect other
      things reading the “ETag” response header (like the etag
      directive introduced in Nginx 1.3.3+). thanks Brian A.
      for the patch.

    • bugfix: when lua_http10_buffering is on, for HTTP 1.0
      requests, ngx.exit(N) would always trigger the Nginx’s own
      error pages when N >= 300. thanks Matthieu T. for
      reporting this issue.

    • bugfix: modifying the “Cookie” request headers via
      ngx.req.set_header or ngx.req.clear_header did not update
      the Nginx internal data structure, “r->headers_in.cookies”,
      at the same time, which might cause issues when reading
      variables $cookie_COOKIE, for example. thanks Matthieu
      Tourne for the patch.

    • bugfix: modifying the “Via” request header with
      ngx.req.set_header or ngx.req.clear_header did not update
      the special field “r->headers_in.via” when the ngx_gzip
      module was enabled.

    • bugfix: modifying the “X-Real-IP” request header with
      ngx.req.set_header or ngx.req.clear_header did not update
      the special field “r->headers_in.x_real_ip” when the
      ngx_realip module was enabled. thanks Matthieu T. for
      the patch.

    • bugfix: modifying the “Connection” request header via
      ngx.req.set_header or ngx.req.clear_header did not update
      the special internal field in the Nginx core,
      “r->headers_in.connection_type”. Thanks Matthieu T. for
      the patch.

    • bugfix: modifying the “User-Agent” request header via
      ngx.req.set_header or ngx.req.clear_header did not update
      those special internal flags in the Nginx core, like
      “r->headers_in.msie6” and “r->headers_in.opera”. Thanks
      Matthieu T. for the patch.

    • bugfix: fixed several places in the header API where we
      should return “NGX_ERROR” instead of
      “NGX_HTTP_INTERNAL_SERVER_ERROR”.

  • upgraded SrcacheNginxModule to 0.20.

    • bugfix: use of C global variables at the configuration phase
      would cause troubles when “HUP” reload failed.
  • upgraded HeadersMoreNginxModule to 0.20.

    • bugfix: modifying the “Cookie” request headers via
      more_set_input_headers or more_clear_input_headers did not
      update the Nginx internal data structure,
      “r->headers_in.cookies”, at the same time, which might cause
      issues when reading variable $cookie_COOKIE, for example.

    • bugfix: modifying the “Via” request header via
      more_set_input_headers or more_clear_input_headers did not
      update the special internal field in the Nginx core,
      “r->headers_in.via”, when the ngx_gzip module was enabled.

    • bugfix: modifying the “X-Real-IP” request header via
      more_set_input_headers or more_clear_input_headers did not
      update the special internal field in the Nginx core,
      “r->headers_in.x_real_ip”, when the ngx_realip module was
      enabled.

    • bugfix: modifying the “Connection” request header via
      more_set_input_headers or more_clear_input_headers did not
      update the special internal field in the Nginx core,
      “r->headers_in.connection_type”.

    • bugfix: modifying the “User-Agent” request header via
      more_set_input_headers or more_clear_input_headers did not
      update those special internal flags in the Nginx core, like
      “r->headers_in.msie6” and “r->headers_in.opera”.

    • bugfix: fixed places where we should return “NGX_ERROR”
      instead of “NGX_HTTP_INTERNAL_SERVER_ERROR”.

  • feature: always enable debuginfo in the bundled LuaJIT 2.0.1
    build and Lua 5.1.5 build to support Nginx Systemtap Toolkit.

  • bugfix: no longer pass “-O0” to gcc when the “–with-debug”
    configure option is specified because gcc often generates bogus
    DWARF info when optimization is turned off.

The HTML version of the change log with lots of helpful hyper-links
can be browsed here:

http://openresty.org/#ChangeLog1002008

OpenResty (aka. ngx_openresty) is a full-fledged web application
server by bundling the standard Nginx core, lots of 3rd-party Nginx
modules and Lua libraries, as well as most of their external
dependencies. See OpenResty’s homepage for details:

http://openresty.org/

We have been running extensive testing on our Amazon EC2 test cluster
and ensure that all the components (including the Nginx core) play
well together. The latest test report can always be found here:

http://qa.openresty.org

Enjoy!
-agentzh