[ANN] ngx_openresty devel version 184.108.40.206 released
agentzh at gmail.com
Mon Mar 25 07:06:50 UTC 2013
I am happy to announce that the new development version of
ngx_openresty, 220.127.116.11, is now released:
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 (devel) release, 18.104.22.168:
* upgraded LuaNginxModule to 0.7.18.
* feature: implemented ngx.req.http_version() that returns the
HTTP version number for the current request. thanks Matthieu
Tourne for requesting this.
* feature: implemented the ngx.req.raw_header() function for
returning the original raw HTTP protocol header string
received by Nginx. thanks Matthieu Tourne for requesting
* feature: added new methods safe_set and safe_add to
ngx.shared.DICT objects, which never override existing
unexpired items but immediately return nil and a "no memory"
string message when running out of storage. thanks Matthieu
Tourne for requesting this.
* feature: datagram Unix domain sockets created by
ngx.socket.udp() can now receive data from the other
endpoint via "autobind" on Linux. thanks Dirk Feytons for
* change: the ngx.re.match, ngx.re.gmatch, ngx.re.sub, and
ngx.re.gsub functions used to throw Lua exceptions
aggressively for all the error conditions; now they just
return an additional Lua string describing the error for
almost all common errors instead of throwing exceptions,
including pcre compile-time and exec-time failures. thanks
Matthieu Tourne for requesting this change.
* bugfix: use of ngx.req.socket() could make socket reading
hang infinitely when the request did not take a request body
at all (that is, when the Content-Length request header is
missing). thanks Matthieu Tourne for reporting this issue.
* bugfix: when a non-table value was specified for the "args"
option in the ngx.location.capture or
ngx.location.capture_multi call, memory invalid access might
happen, which resulted in garbage data at least. thanks
Siddon Tang for reporting this issue.
* bugfix: when the Lua code using UDP/TCP cosockets + resolver
was run in a subrequest, the subrequest could hang due to
missing calls to "ngx_http_run_posted_requests" in the
UDP/TCP cosocket resolver handler. thanks Lanshun Zhou for
reporting this issue.
* bugfix: ngx.socket.udp: memory leaks or invalid memory
accesses might happen when the DNS resolver failed to
* bugfix: rewrite_by_lua_no_postpone can only work globally
and did not reject contexts like "server" and "location"
configuration blocks. thanks Matthieu Tourne for reporting
* bugfix: (large) in-file request bodies could not be
inherited correctly by multiple subrequests issued by
ngx.location.capture. thanks Matthieu Tourne for reporting
* bugfix: ngx.req.get_headers(limit, true) would still return
header names in the pure lower-case form when the "limit"
argument was an integer. thanks Matthieu Tourne for
reporting this issue.
* bugfix: ngx.re.match: when the "D" regular expression option
was specified, an empty Lua table would always be created
even when the named capture was actually empty. thanks
Matthieu Tourne for reporting this issue.
* docs: made it explicit that redirecting to external domains
is also supported in ngx.redirect(). thanks Ron Gomes for
* upgraded EchoNginxModule to 0.44.
* bugfix: $echo_client_request_headers was evaluated to only
the last part of the request header when "large header
buffers" were used.
* change: preserve the trailing "CR LF" at the end of the
whole HTTP protocol header returned by
* upgraded Redis2NginxModule to 0.10.
* feature: allow use of the request body data in Nginx
variables for main requests by always reading the request
body automatically; we used to always discard the request
body just like the standard ngx_memcached module. thanks
Ristona Hua for sharing this usage.
* docs: updated the docs for the limitations on Redis pub/sub.
thanks LazyZhu for pointing out the potential confusions.
* docs: now we recommend LuaRestyRedisLibrary instead when
being used with LuaNginxModule.
* upgraded LuaRestyUploadLibrary to 0.08.
* bugfix: when multiple "Content-Type" request headers were
given, a Lua exception would be thrown; now we just pick up
the first one.
* docs: better error handling in the code sample. thanks
wgm.china for the report.
* feature: applied the variables_in_redis_pass patch to
RedisNginxModule 0.3.6 to allow use of Nginx variables in the
redis_pass directive. thanks Diptamay Sanyal for requesting this
* bugfix: applied Lanshun Zhou's run_posted_requests_in_resolver
patch to the Nginx core:
* bugfix: applied the official hotfix #1 patch for the bundled
The HTML version of the change log with some helpful hyper-links can
be browsed here:
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:
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:
More information about the nginx