[ANN] ngx_openresty (stable) released

agentzh agentzh at gmail.com
Thu Nov 3 09:34:09 UTC 2011

Hi, folks!

I'm happy to announce that the new stable release of ngx_openresty,, has just been kicked out of door:


This is the first stable release of ngx_openresty that is based on the
Nginx core 1.0.8. And this is a big release with a *lot* of bug fixes and
new features.

Special thanks go to all our contributors and users to help make this
happen over the last month :)

Here goes the complete change log for this release, as compared to the last
stable release,, released nearly a month ago:

   - upgraded the Nginx core to 1.0.8.
   - upgraded LuaNginxModule to 0.3.1rc23.
      - feature: added new directive lua_shared_dict:
      - feature: added Lua API for the shm-based dictionary:
      - feature: now we apply the patch to the nginx core so as to allow
      main request body modifications.
      - feature: added new Lua API ngx.req.set_body_file():
      - feature: added new Lua API ngx.req.set_body_data():
      - feature: added new Lua functions ngx.req.read_body(),
      ngx.req.discard_body(), ngx.req.get_body_data(), and
      ngx.req.get_body_file(). see the docs here:
      - feature: now we implemented ngx.req.set_uri() and
      ngx.req.set_uri_args() to emulate ngx_rewrite's rewrite directive
      (without redirect or permanent modifiers). thanks Vladimir Protasov
      (utros) and Nginx User.
      - feature: added constant ngx.HTTP_METHOD_NOT_IMPLEMENTED (501).
      thanks Nginx User.
      - feature: now for HTTP 1.0 requests, we disable the automatic full
      buffering mode if the user sets the Content-Length response header
      before sending out the headers. this allows streaming output for HTTP 1.0
      requests if the content length can be calculated beforehand.
thanks Li Ziyi.
      - bugfix: now we properly support setting the Cache-Control response
      header via the ngx.header.HEADER interface.
      - bugfix: no longer set header hash to 1. use the ngx_hash_key_lcinstead.
      - bugfix: now we skip rewrite phase Lua handlers altogether if
      ngx_rewrite's rewrite directive issue a location re-lookup by
      changing URIs (but not including rewrite ... break). thanks Nginx User.
      - bugfix: fixed hanging issues when using ngx.exec() within
      rewrite_by_lua and access_by_lua. thanks Nginx User for reporting it.
      - bugfix: lua_need_request_body should not skip requests with methods
      other than POST and PUT. thanks Nginx User.
      - bugfix: ndk.set_var.DIRECTIVE had a memory issue and might pass
      empty argument values to the directive being called. thanks dannynoonan.
      - bugfix: no longer free request body buffers that are not allocated
      by ourselves.
      - bugfix: now we allow setting ngx.var.VARIABLE to nil.
      - bugfix: now we explicitly clear all the modules' contexts before
      dump to named location with ngx.exec. thanks Nginx User.
   - upgraded EchoNginxModule to 0.37rc7.
      - bugfix: fixed a memory issue in both echo_sleep and
      echo_blocking_sleep: we should not pass ngx_str_t strings to
atof()which expects C strings.
      - bugfix: now we explicitly clear all the modules' contexts before
      dump to named location with echo_exec.
      - bugfix: bugfix: echo_exec may hang when running after
echo_sleep(or other I/O interruption calls): we should have called
      ngx_http_finalize_request on NGX_DONE to decrement r->main->countanyway.
      - bugfix: now we properly set the Content-Length request header for
   - upgraded SrcacheNginxModule to 0.13rc2.
      - feature: implemented response status line and general response
      header cachin and added new directives srcache_store_hide_header and
      srcache_store_pass_header to control which headers to cache and which
      - feature: added new directive srcache_response_cache_control to
      control whether honor response headers Cache-Control and Expires,
      default on.
      - feature: we disable srcache_store automatically by default
when Cache-Control:
      max-age=0 and Expires: <date no more recently than now> are seen.
      - feature: implemented builtin nginx variable $srcache_expire for
      automatic expiration time calculation based on response headers
      Cache-Control (max-age) and Expires; also added new directives
      srcache_max_expire and srcache_default_expire.
      - feature: implemented the srcache_store_no_cache directive; now by
      default, we do not store responses with the header Cache-Control:
      no-cache into the cache.
      - feature: implemented the srcache_store_no_store directive (default
      off). Now by default, responses with the header Cache-Control:
      no-store will not be stored into the cache.
      - feature: implemented the srcache_store_private directive to control
      whether to store responses with the header Cache-Control: private.
      - feature: implemented the srcache_request_cache_control directive to
      allow request headers Cache-Control: no-cache or Pragma: no-cache to
      force bypassing cache lookup. it also honors the request header
      no-store. this directive is turned off by default.
      - feature: now we check response header Content-Encoding by default
      and a non-empty header value will skip srcache_store; also introduced
      a new directive named srcache_ignore_content_encoding to ignore this
      response header.
      - feature: implemented the srcache_methods directive to specify
      request methods that are cacheable, by default, only GET and HEAD are
      - bugfix: we no longer set header hash to 1; we use
      - bugfix: when we skip srcache_fetch by means of srcache_fetch_skip,
      we should not automatically skip srcache_store.
      - bugfix: now we ignore the Content-Length header (if any) of the
      main request for the subrequests.
      - bugfix: there might be a segfault when failing to allocate memory
      in ngx_http_srcache_add_copy_chain. thanks Shaun savage.
      - feature: implemented new directive srcache_store_statuses to allow
      the user to specify the response status code list that is to be
stored into
      the cache.
      - bugfix: we now only cache 200, 301, and 302 responses by default.
   - upgraded IconvNginxModule to 0.10rc5.
      - bugfix: fixed -Wset-but-not-used warnings issued by gcc 4.6.0.
      thanks Zhi Jiale (Calio).
   - upgraded HeadersMoreNginxModule to 0.16rc3.
      - bugfix: we should set header hash using ngx_hash_key_lc, not simply
      to 1.
      - bugfix: fixed setting Cache-Control response headers. we should
      properly prepare the r->cache_control array as well.
   - upgraded RdsJsonNginxModule to 0.12rc6.
      - bugfix: fixed compatibility with nginx 1.1.4+.
   - upgraded RdsCsvNginxModule to 0.04.
      - bugfix: fixed compatibility issues with nginx 1.1.4+.
      - optimization: now we only register our filters when rds_csv is
      actually used in nginx.conf.
   - upgraded Redis2NginxModule to 0.08rc1.
      - bugfix: fixed compatibility with nginx 1.1.4+.
   - upgraded DrizzleNginxModule to 0.1.2rc2.
      - bugfix: fixed compatibility with nginx 1.1.4+
   - upgraded MemcNginxModule to 0.13rc1.
      - bugfix: fixed compatibility with nginx 1.1.4+.
   - upgraded SetMiscNginxModule to v0.22rc3.
      - minor code cleanup.
   - applied the patch to the Nginx core that always clears all modules'
   contexts in ngx_http_named_location.
   - applied the patch for the variable-header-ignore-no-hash issue. see
   http://forum.nginx.org/read.php?29,216062 for details.

As always, you're welcome to report bugs and feature requests either here
or directly to me :)

It'll also be highly appreciated to try out the devel releases (based on
the Nginx core 1.0.9+) that are coming out later ;)

OpenResty (aka. ngx_openresty) is a full-fledged web application server by
bundling the standard Nginx core, lots of 3rd-party Nginx
as well as most of their external dependencies.

By taking adantage of various well-designed Nginx modules, OpenResty
effectively turns the nginx server into a powerful web app server, in which
the web developers can use the Lua programming language to script various
existing nginx C modules and Lua modules and construct extremely
high-performance web applications that is capable to handle 10K+

OpenResty aims to run your server-side web app completely in the Nginx
server, leveraging Nginx's event model to do non-blocking I/O not only with
the HTTP clients, but also with remote backends like MySQL, PostgreSQL,
Memcached, and Redis.

You can find more details on the homepage of ngx_openresty here:


Have fun!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20111103/8d74cc64/attachment-0001.html>

More information about the nginx mailing list