nginx-1.2.9 legacy version has been released, addressing the information disclosure security problem in some previous nginx versions (CVE-2013-2070).
May 12, 2013
May 06, 2013
Nginx Website (nginx)
nginx-1.4.1 stable and nginx-1.5.0 development versions have been released, with the fix for the stack-based buffer overflow security problem in nginx 1.3.9 - 1.4.0, discovered by Greg MacManus, of iSIGHT Partners Labs (CVE-2013-2028).
nginx-1.4.1 stable and nginx-1.5.0 development versions have been released, with the fix for the stack-based buffer overflow security problem in nginx 1.3.9 - 1.4.0, discovered by Greg MacManus, of iSIGHT Partners Labs (CVE-2013-2028).
April 24, 2013
Nginx Website (nginx)
Source code repository switched to Mercurial.
Source code repository switched to Mercurial.
April 23, 2013
Nginx Website (nginx)
nginx-1.4.0 stable version has been released, incorporating many new features developed in the 1.3.x branch - support for proxying of WebSocket connections, OCSP stapling, SPDY module, gunzip filter and more.
nginx-1.4.0 stable version has been released, incorporating many new features developed in the 1.3.x branch - support for proxying of WebSocket connections, OCSP stapling, SPDY module, gunzip filter and more.
April 15, 2013
Nginx Website (nginx)
nginx-1.3.16 development version has been released.
nginx-1.3.16 development version has been released.
April 10, 2013
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.7.5 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.7.3:
- upgraded EchoNginxModule to 0.45.
- bugfix: $echo_client_request_headers would return the first part of the request body when request body was read before reading this variable.
- bugfix: $echo_client_request_headers might not work properly in a subrequest.
- upgraded DrizzleNginxModule to 0.1.5.
- bugfix: compilation errors occurred with nginx 1.3.15. thanks Karl Blessing for reporting this issue.
- docs: fixed a typo in the sample code for $drizzle_thread_id reported by 岚偑/yy秋叶.
- docs: documented the config syntax for db passwords with special chars in them.
- upgraded LuaNginxModule to 0.7.20.
- feature: now we allow the "0" time argument in ngx.sleep().
- feature: ngx.location.capture and ngx.location.capture_multi now return a lua table with the boolean field "truncated", which indicates whether the subrequest response body is truncated.
- bugfix: request hung when rewrite cycled inngx.req.set_uri(uri, true) instead of throwing out an error log message and a 500 page properly. thanks Calin Don for the report.
- bugfix: assignment to ngx.status did not take effect when the response status line had already been generated (by ngx_proxy or others). thanks eqiuno for reporting this issue.
- bugfix: ngx.req.raw_header() would return the first part of the request body when request body was read before the call. thanks Matthieu Tourne for reporting this issue.
- bugfix: ngx.req.raw_header() might not work properly in a subrequest.
- bugfix: we would override the subrequest response status code later when error happens.
- bugfix: the debug log message "lua set uri jump to <uri>" generated by ngx.req.set_uri(uri, true) was wrong for "<uri>" was the old URI.
- upgraded LuaRestyMySQLLibrary to 0.13.
- bugfix: 64-bit integer values in the MySQL packets (like last insert ids) could not be properly parsed due to the lack of support for 64-bit integers in LuaJIT's standard "bit" module. thanks Azure Wang for the patch implementing a temporary workaround.
- docs: various typo fixes from Tor Hveem and doledoletree.
- upgraded LuaRestyMemcachedLibrary to 0.11.
- feature: added new method "touch" for the new Memcached command "touch". thanks merlin for the patch.
- updated the upstream_truncation patch for the Nginx core.
- bugfix: chunked upstream response bodies were treated as 502. thanks Andy Yuan for the report.
- bugfix: request response status was changed to 502 after response header was sent in case of data truncation.
- bugfix: the "last buf" (i.e., bufs with "last_buf" or "last_in_chain" set) should not be sent downstream in case of upstream data truncation.
- updated the dtrace patch for the Nginx core.
- feature: made the stap function
ngx_chain_dump()print out info about the "last_buf" and "last_in_chain" flags in bufs and removed the old "<eof>" notation in the output.
- feature: made the stap function
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
Have fun!
April 01, 2013
Nginx Website (nginx)
nginx-1.2.8 stable version has been released.
nginx-1.2.8 stable version has been released.
March 25, 2013
Nginx Website (nginx)
nginx-1.3.15 development version has been released, featuring experimental SPDY module.
nginx-1.3.15 development version has been released, featuring experimental SPDY module.
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.7.3 released
http://openresty.org/#Download
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.7.1:
- 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 this.
- 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 the patch.
- 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_requestsin 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 resolve.
- 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 this issue.
- bugfix: (large) in-file request bodies could not be inherited correctly by multiple subrequests issued by ngx.location.capture. thanks Matthieu Tourne for reporting this issue.
- 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 asking.
- 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 LFat the end of the whole HTTP protocol header returned by $echo_client_request_headers.
- 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-Typerequest 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.
- bugfix: when multiple
- 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 feature.
- bugfix: applied Lanshun Zhou's run_posted_requests_in_resolver patch to the Nginx core: http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003476.html
- bugfix: applied the official hotfix #1 patch for the bundled LuaJIT 2.0.1.
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!
March 12, 2013
Nginx Website (nginx)
Packt is going to publish a book by Dimitri Aivaliotis "Mastering Nginx".
Packt is going to publish a book by Dimitri Aivaliotis "Mastering Nginx".
March 04, 2013
Nginx Website (nginx)
nginx-1.3.14 development version has been released.
nginx-1.3.14 development version has been released.
February 23, 2013
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.7.1 released
http://openresty.org/#Download
Below is the complete change log for this release, as compared to the last (stable) release, 1.2.6.6:
- upgraded the Nginx core to 1.2.7.
- see http://nginx.org/en/CHANGES-1.2 for changes.
- upgraded LuaJIT to 2.0.1.
- see http://luajit.org/changes.html for changes.
- upgraded LuaNginxModule to 0.7.16.
- optimize: removed the unsed
sizefield and related computatins from the script engine for thengx.reAPI. - optimize: saved a little memory in the script engine for the
ngx.reAPI.
- optimize: removed the unsed
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
Have fun!
February 18, 2013
Nginx Website (nginx)
nginx-1.3.13 development version has been released, featuring support for proxying of WebSocket connections.
nginx-1.3.13 development version has been released, featuring support for proxying of WebSocket connections.
Yichun Zhang (agentzh)
ngx_openresty stable version 1.2.6.6 released
http://openresty.org/download/ngx_openresty-1.2.6.6.tar.gz
And the PGP signature file for this release tar ball is
http://openresty.org/download/ngx_openresty-1.2.6.6.tar.gz.asc
The PGP public key (with ID A0E98066) has been uploaded to the key servers pgp.mit.edu and keys.gnupg.net.
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (development) release, 1.2.6.5:
- upgraded LuaNginxModule to 0.7.15.
- bugfix: the original Lua VM error messages might get lost in case of Lua code crashes when user coroutines were used. thanks Dirk Feytons for the report.
- diagnose: added more info about
r->main->countto the debugging logs. - style: massive coding style fixes according to the Nginx coding style.
- LuaJIT-2.0.0
- array-var-nginx-module-0.03rc1
- auth-request-nginx-module-0.2
- drizzle-nginx-module-0.1.4
- echo-nginx-module-0.42
- encrypted-session-nginx-module-0.02
- form-input-nginx-module-0.07
- headers-more-nginx-module-0.19
- iconv-nginx-module-0.10rc7
- lua-5.1.5
- lua-cjson-1.0.3
- lua-rds-parser-0.05
- lua-redis-parser-0.10
- lua-resty-dns-0.09
- lua-resty-memcached-0.10
- lua-resty-mysql-0.12
- lua-resty-redis-0.15
- lua-resty-string-0.08
- lua-resty-upload-0.07
- memc-nginx-module-0.13rc3
- nginx-1.2.6
- ngx_coolkit-0.2rc1
- ngx_devel_kit-0.2.18
- ngx_lua-0.7.15
- ngx_postgres-1.0rc2
- rds-csv-nginx-module-0.05rc2
- rds-json-nginx-module-0.12rc10
- redis-nginx-module-0.3.6
- redis2-nginx-module-0.09
- set-misc-nginx-module-0.22rc8
- srcache-nginx-module-0.19
- xss-nginx-module-0.03rc9
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!
February 11, 2013
Nginx Website (nginx)
nginx-1.2.7 stable version has been released.
nginx-1.2.7 stable version has been released.
February 10, 2013
Valery Kholodkov (vkholodkov)
Queueing systems
February 09, 2013
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.6.5 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (development) release, 1.2.6.3:
- upgraded SrcacheNginxModule to 0.19.
- bugfix: HEAD and conditional GET requests would still fall back to content handler execution (leading to backend accesses) even in case of a cache hit. thanks Wang Lichao for reporting this issue.
- style: massive coding style fixes.
- upgraded LuaRestyUploadLibrary to 0.07.
- bugfix: the boundary string could not be parsed if no space was present before the
boundary=xxxparameter in theContent-Typerequest header. thanks chenshu for reporting this issue.
- bugfix: the boundary string could not be parsed if no space was present before the
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
Have fun!
February 04, 2013
Nginx Website (nginx)
nginx-1.3.12 development version has been released.
nginx-1.3.12 development version has been released.
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.6.3 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (development) release, 1.2.6.1:
- upgraded LuaNginxModule to 0.7.14.
- feature: implemented named subpattern support in ngx.re.match, ngx.re.gmatch, ngx.re.sub, and ngx.re.gsub; also added new regex option
Dto allow duplicate named subpattern names. thanks Ray Bejjani for the patch. - feature: implemented the
Jregex option for the PCRE Javascript compatible mode in the ngx.re API. thanks lhmwzy for requesting this. - feature: setting ngx.header.HEADER after sending out the response headers now only produced an error message in the Nginx error logs and does not throw out a Lua exception. this should be handy for Lua development. thanks Matthieu Tourne for requesting this.
- feature: automatic Lua 5.1 interpreter detection on OpenBSD 5.2. thanks Ilya Shipitsin for the patch.
- refactor: when the Nginx core fails to send the "100 Continue" response in case of the "Expect: 100-continue" request header (or just running out of memory), ngx.req.read_body() will no longer throw out a "failed to read request body" Lua error but will just terminate the current request and returns the 500 error page immediately, just as what the Nginx core currently does in this case.
- bugfix: because of the recent API behaviour changes in nginx 1.2.6+ and 1.3.9+, the "http request count is zero" alert might happen when ngx.req.read_body() was called to read the request body and Nginx failed to send out the "100 Continue" response (like client connection early abortion and etc). thanks stonehuzhan for reporting this issue.
- bugfix: setting the "eof" argument (i.e.,
ngx.arg[2]) in body_filter_by_lua* for a subrequest could truncate the main request's response data stream. - bugfix: in body_filter_by_lua*, the "eof" argument (i.e.,
ngx.arg[2]) was never set in Nginx subrequests. - bugfix: for nginx 1.3.9+ compatibility, we return an error while using ngx.req.socket() to read the chunked request body (for now), because chunked support in the downstream cosocket API is still a TODO.
- bugfix: for nginx 1.3.9+ compatibility, rewrite_by_lua* or access_by_lua* handlers might hang if the request body was read there, because the Nginx core now overwrites
r->write_event_handlertongx_http_request_empty_handlerin itsngx_http_read_client_request_bodyAPI. - bugfix: for nginx 1.3.9+ compatibility, we now throw an error in ngx.req.init_body(), ngx.req.set_body_data(), and ngx.req.set_body_file() when calling them without calling ngx.req.read_body() or after calling ngx.req.discard_body().
- bugfix: a compilation error would happen when building with an Nginx core patched by the SPDY patch 58_1.3.11 because the patch had removed a request field from the Nginx core. thanks Chris Lea for reporting this.
- bugfix: we did not get the request reference counter (i.e.,
r->main->count) right when lua_need_request_body was turned on and nginx versions older than 1.2.6 or 1.2.9 were used. - optimize: we no longer traverse the captured body chain everytime we append a new link to it in ngx.location.capture and ngx.location.capture_multi.
- docs: documented the ngx.quote_sql_str API.
- feature: implemented named subpattern support in ngx.re.match, ngx.re.gmatch, ngx.re.sub, and ngx.re.gsub; also added new regex option
- upgraded SrcacheNginxModule to 0.18.
- bugfix: we might serve a truncated srcache_fetch subrequest's response body as the cached response.
- upgraded EchoNginxModule to 0.42.
- feature: the echo_after_body directive is now enabled in Nginx subrequests (again).
- bugfix: we did not set the "last_in_chain" buffer flag when echo_after_body was used in subrequests.
- upgraded FormInputNginxModule to 0.07.
- bugfix: Nginx might hang when it failed to send the "100 Continue" response for Nginx versions older than 1.2.6 (and those older than 1.3.9 in the 1.3.x series).
- upgraded NginxDevelKit ot 0.2.18.
- bugfix: various fixes for C89 compliance. also stripped some line-trailing spaces.
- bugfix: guard macros were missing in the
ndk_set_var.hheader file. - bugfix: the
ndk_stringsubmodule failed to compile with gcc 4.6. thanks Jon Kolb for the patch. - bugfix: the
ndk_set_varexample did not use the new way in itsconfigfile. thanks Amos Wenger for the patch. - docs: fixes in README to reflect recent changes. thanks Amos Wenger for the patch.
- applied Ruslan Ermilov's resolver_wev_handler_segfault_with_poll patch to the Nginx core bundled. see the related nginx-devel thread for details.
- excluded the allow_request_body_updating patch from the Nginx core bundled.
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!
February 03, 2013
Valery Kholodkov (vkholodkov)
Logging modules re-released!
Valery Kholodkov (vkholodkov)
Horizontal Partitioning
January 24, 2013
Valery Kholodkov (vkholodkov)
Comments are back!
January 22, 2013
Valery Kholodkov (vkholodkov)
Reading list: Foundations of Statistical Natural Language Processing
January 09, 2013
Nginx Website (nginx)
nginx-1.3.11 development version has been released.
nginx-1.3.11 development version has been released.
January 05, 2013
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.6.1 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (stable) release, 1.2.4.14:
- upgraded the Nginx core to 1.2.6.
- see http://nginx.org/en/CHANGES-1.2 for changes.
- upgraded LuaNginxModule to 0.7.13.
- bugfix: ngx.decode_args() might result in Lua string storage corruption. thanks Xu Jian for the report and Kindy Lin for the patch.
- bugfix: using a key with underscores in ngx.header.KEY resulted in Lua string storage corruption. thanks rkearsley for reporting this issue.
- bugfix: accessing ngx.var.VARIABLE allocated temporary memory buffers in the request memory pool, which could lead to unnecessarily large memory footprint; now it allocates such buffers via Lua GC.
- feature: automatically detect LuaJIT 2.0 on FreeBSD by default. thanks rkearsley for the patch.
- docs: explained why
local foo = require "foo"is required for loading a Lua module. thanks rkearsley for asking. - docs: fixed a typo in the code sample for tcpsock:receiveuntil(). thanks Yecheng Fu for the patch.
- docs: fixed a typo in the Lua code sample for ngx.re.gmatch (we forgot to add
dothere). thanks Guo Yin for reporting this issue.
- upgraded LuaRestyUploadLibrary to 0.06.
- optimize: use the pure lower-case form of the key
content-typeto index the headers table returned by ngx.req.get_headers() so as to avoid the overhead of calling the__indexmetamethod.
- optimize: use the pure lower-case form of the key
- upgraded SrcacheNginxModule to 0.17.
- bugfix: srcache_store would emit the misleading error message "srcache_store: skipped because response body truncated: N > 0" for HEAD requests (because a HEAD request's response never carries a body); it now just skips such responses silently. thanks Yang Jin for reporting this issue.
- bugfix: when relative paths were used in
--with-zlib=DIR,--with-libatomic=DIR,--with-md5=DIR, and--with-sha1=DIR, the build system of Nginx could not findDIRat all. thanks LazyZhu for reporting this issue.
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
Have fun!
December 24, 2012
Nginx Website (nginx)
nginx-1.3.10 development version has been released. Merry Christmas!
nginx-1.3.10 development version has been released. Merry Christmas!
Yichun Zhang (agentzh)
ngx_openresty stable version 1.2.4.14 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (development) release, 1.2.4.13:
- upgraded LuaNginxModule to 0.7.9.
- bugfix: assignment to ngx.status would always be overridden by the later ngx.exit() calls for HTTP 1.0 requests if lua_http10_buffering is on (the default setting). thanks chenshu for reporting this issue.
- bugfix: there was a typo in the error message when accessing an Nginx variable that has not been defined.
- docs: documented the request body automatic inheritance behaviour in ngx.location.capture.
- docs: fixed incorrect dates shown in the code samples for ngx.http_time and ngx.parse_http_time. thanks Gosuke Miyashita for the patch.
- upgraded LuaRestyUploadLibrary to 0.05.
- bugfix: unexpected runtime exceptions would be thrown when
resty.uploadmet a in-part header field line or a terminating boundary line that was too long. this bug had appeared in LuaRestyUploadLibrary 0.04 and OpenResty 1.2.4.7. - bugfix:
resty.uploadcould not parseContent-Typerequest header values likeboundary="simple boundary", that is, with double quotes around the boundary value. - optimize: marked internal auxiliary functions as Lua
localfunctions.
- bugfix: unexpected runtime exceptions would be thrown when
- LuaJIT-2.0.0
- array-var-nginx-module-0.03rc1
- auth-request-nginx-module-0.2
- drizzle-nginx-module-0.1.4
- echo-nginx-module-0.41
- encrypted-session-nginx-module-0.02
- form-input-nginx-module-0.07rc5
- headers-more-nginx-module-0.19
- iconv-nginx-module-0.10rc7
- lua-5.1.5
- lua-cjson-1.0.3
- lua-rds-parser-0.05
- lua-redis-parser-0.10
- lua-resty-dns-0.09
- lua-resty-memcached-0.10
- lua-resty-mysql-0.12
- lua-resty-redis-0.15
- lua-resty-string-0.08
- lua-resty-upload-0.05
- memc-nginx-module-0.13rc3
- nginx-1.2.4
- ngx_coolkit-0.2rc1
- ngx_devel_kit-0.2.17
- ngx_lua-0.7.9
- ngx_postgres-1.0rc2
- rds-csv-nginx-module-0.05rc2
- rds-json-nginx-module-0.12rc10
- redis-nginx-module-0.3.6
- redis2-nginx-module-0.09
- set-misc-nginx-module-0.22rc8
- srcache-nginx-module-0.16
- xss-nginx-module-0.03rc9
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
Have fun!
December 12, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.4.13 released
http://openresty.org/#Download
This is possibly the last devel release in the 1.2.4.x series if no regressions are reported.
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.4.11:
- upgraded LuaNginxModule to 0.7.8.
- bugfix: ngx.req.set_body_file() might lead to memory issues because it directly used the storage of Lua strings allocated by the Lua GC (we should have allocated a new memory block on the Nginx side and copy the string data over).
- upgraded LuaRestyMySQLLibrary to 0.12.
- feature: convert the MySQL
newdecimaltyped fields to Lua numbers by default as requested by shedar. - optimize: marked the internal Lua function
_recv_packetas alocalfunction.
- feature: convert the MySQL
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!
December 08, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.4.11 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.4.9:
- upgraded LuaNginxModule to 0.7.7.
- feature: added ngx.req.start_time() to return the request starting time in seconds (the milliseconds part is the decimal part just as in ngx.now). thanks Matthieu Tourne for the patch.
- feature: setting ngx.status or calling ngx.exit(N) (where
N >= 300) after sending out response headers no longer yields a Lua exception but only leaves an error message in the error.log file, which is useful for Lua land debugging. thanks Matthieu Tourne for requesting this. - feature: the user can now call ngx.exit(444) to abort pending subrequests in other "light threads" from within a "light thread".
- feature: added new dtrace static probe
http-lua-user-thread-wait. - bugfix: ngx.location.capture and ngx.location.capture_multi might hang infinitely because the parent request might not be waken up right after the first time the
post_subrequestcallback was called. - bugfix: the "light thread" object created by ngx.thread.spawn() or ngx.on_abort() might be prematurely collected by the Lua GC because we did not correctly register its coroutine object into the Lua regsitry table. this bug may crash the Lua VM and Nginx workers under load. thanks Zhu Dejiang for reporting this issue.
- bugfix: ngx.thread.wait() might hang infinitely when more than 4 user "light threads" are created in the same request handler due to the incorrect use of
ngx_array_tforngx_list_t. thanks Junwei Shi for reporting this issue. - bugfix: when a user coroutine or user "light thread" dies with an error, our Lua backtrace dumper written in C may access one of its dead parent threads (if any) which could lead to segmentation faults.
- bugfix: ngx.exit(N) incorrectly threw out Lua exceptions when
Nwas 408, 499, or 444 and the response header was already sent. thanks Kindy Lin for reporting this issue. - bugfix: when the user callback function registered by ngx.on_abort() discarded the client abort event, the request would be aborted by force when the next client abort event happened.
- bugfix: an English typo in the error message for init_by_lua*.
- applied slab_alloc_no_memory_as_info.patch to lower the log level of the error message "ngx_slab_alloc() failed: no memory" from "crit" to "info".
- bugfix: the upstream_pipelining patch introduced a regression that when
upstream_nextis in action, Nginx might hang. thanks Kindy Lin for reporting this issue. - bugfix: include the latest chagnes in the LuaJIT 2.0 git repository (up to git commit 2ad9834d).
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
Have fun!
November 21, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.4.9 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.4.7:
- upgraded LuaJIT to 2.0.0 final.
- change logs: http://luajit.org/changes.html
- upgraded LuaNginxModule to 0.7.5.
- bugfix: ngx.req.clear_header() would result in memory invalid reads when removing the 21st, 41st, 61st (and etc) request headers. thanks Umesh Sirsiwal for reporting this issue.
- bugfix: ngx.log() would truncate the log messages which have null characters (
\0) in it. thanks Wang Xi for reporting this issue. - docs: eliminated the use of
package.seeallin code samples and also explicitly discouraged the use of it. - docs: documented the special case that client closes the connection before ngx.req.socket() finishes reading the whole body.
- upgraded HeadersMoreNginxModule to 0.19.
- bugfix: more_clear_input_headers would result in memory invalid reads when removing the 21st, 41st, 61st (and etc) request headers. thanks Umesh Sirsiwal for reporting this issue.
- docs: fixed an issue in the sample code that tried to clear
Transfer-Encodingwhich cannot actually be cleared. thanks koukou73gr.
- upgraded LuaRestyStringLibrary to 0.08.
- bugfix: the
new()method in theresty.aesmodule might use a random key when themethodoption is omitted in thehashtable argument. thanks wsser for the patch. - feature: we now return a second string describing the error when either
ivorkeyis bad.
- bugfix: the
- bugfix:
./configure --with-pcre=PATHdid not accept relative paths asPATH. thanks smallfish for reporting this issue.
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!
November 12, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.4.7 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.4.5:
- upgraded LuaJIT to 2.0.0rc3.
- upgraded LuaNginxModule to 0.7.4.
- feature: added new directive lua_check_client_abort (default to
off) for monitoring and processing the event that the client closes the (downstream) connection prematurely. thanks Zhu Dejiang for request this feature. - feature: added new Lua API ngx.on_abort() which is used to register user Lua function callback for the event that the client closes the (downstream) connection prematurely. thanks Matthieu Tourne for suggesting this feature.
- feature: ngx.exit(N) can now abort pending subrequests when
N = 408(request time out) orN = 499(client closed request) orN = -1(error). - bugfix: The TCP/stream cosocket's connect() method could not detect errors like "connection refused" when kqueue was used (on FreeBSD or Mac OS X, for example). thanks smallfish for reporting this issue.
- bugfix: reading operations on ngx.req.socket() did not return any errors when the request body got truncated; now we return the "client aborted" error.
- feature: added new directive lua_check_client_abort (default to
- upgraded LuaRestyDNSLibrary to 0.09.
- refactor: avoided using
package.seeallin Lua module definitions, which improves performance and also prevents subtle bad side-effects. - bugfix: a debugging output might be sent to stdout unexpectedly in some code path.
- refactor: avoided using
- upgraded LuaRestyMemcachedLibrary to 0.10.
- refactor: avoided using
package.seeallin Lua module definitions, which improves performance and also prevents subtle bad side-effects. - docs: fixed typos in README. thanks cyberty for the patch.
- refactor: avoided using
- upgraded LuaRestyRedisLibrary to 0.15.
- refactor: avoided using
package.seeallin Lua module definitions, which improves performance and also prevents subtle bad side-effects. - optimize: avoided using
ipairs()which is slower than plainfor i=1,Nloops.
- refactor: avoided using
- upgraded LuaRestyMySQLLibrary to 0.11.
- refactor: avoided using
package.seeallin Lua module definitions, which improves performance and also prevents subtle bad side-effects. - feature: now the new() method will return a string describing the error as the second return value in case of failures.
- refactor: avoided using
- upgraded LuaRestyUploadLibrary to 0.04.
- refactor: avoided using
package.seeallin Lua module definitions, which improves performance and also prevents subtle bad side-effects.
- refactor: avoided using
- upgraded LuaRestyStringLibrary to 0.07.
- refactor: avoided using
package.seeallin Lua module definitions, which improves performance and also prevents subtle bad side-effects. - docs: typo-fixes in the code samples from Bearnard Hibbins.
- refactor: avoided using
- bugfix: Nginx upstream modules could not detect the "connection refused" error in time if kqueue was used; now we apply the upstream_test_connect_kqueue patch for the Nginx core.
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
Have fun!
October 31, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.4.5 released
http://openresty.org/#Download
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.4.3:
- applied the official hotfix #1 patch to LuaJIT 2.0.0 beta11.
- see details here: http://www.freelists.org/post/luajit/Hotfix1-for-LuaJIT200beta11
- upgraded LuaNginxModule to 0.7.3.
- feature: added the get_keys method for the shared memory dictionaries for fetching all the (or the specified number of) keys (default to 1024 keys). thanks Brian Akins for the patch.
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!
October 18, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.4.3 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (devel) release, 1.2.4.1:
- upgraded LuaJIT to 2.0.0 beta11.
- made LuaRestyRedisLibrary 27% faster, LuaRestyMemcachedLibrary 22% faster, and LuaRestyMySQLLibrary 15% faster, all for simple test cases loaded by ab, tested on Linux x86_64.
- all Lua APIs involved with I/O in LuaNginxModule are faster in general.
- complete change log: http://luajit.org/changes.html
- upgraded LuaRestyMemcachedLibrary to 0.09.
- optimize: we now use Lua's own
table.concat()to do string concatenation for all the memcached requests instead of relying on the cosocket API (on the C level) because calling the Lua C API is much slower especially when LuaJIT is in use. now for simple test cases loaded byab -k -c10, we get 11.3% overall performance boost.
- optimize: we now use Lua's own
- upgraded LuaNginxModule to 0.7.2.
- feature: now we can automatically detect the vendor-provided LuaJIT-2.0 package on Gentoo. thanks Il'ya V. Yesin for the patch. it is still recommended, however, to explicitly set the environments
LUAJIT_INCandLUAJIT_LIB.
- feature: now we can automatically detect the vendor-provided LuaJIT-2.0 package on Gentoo. thanks Il'ya V. Yesin for the patch. it is still recommended, however, to explicitly set the environments
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
Have fun!
October 15, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.4.1 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (stable) release, 1.2.3.8:
- upgraded the Nginx core to 1.2.4.
- see http://nginx.org/en/CHANGES-1.2 for changes.
- upgraded LuaNginxModule to 0.7.1.
- feature: implemented the "light threads" API, which allows asynchronous concurrent processing within a single Nginx request handler, based on automatically-scheduled Lua coroutines. thanks Lee Holloway for requesting this feature.
- bugfix: ngx.re.gsub() might throw out the exception
attempt to call a string valuewhen thereplaceargument was a Lua function and the subject string was large. thanks Zhu Maohai for reporting this issue. - bugfix: older gcc versions might issue warnings like
variable 'nrets' might be clobbered by 'longjmp' or 'vfork', like gcc 3.4.3 (for Solaris 11) and gcc 4.1.2 (for Red Hat Linux). thanks Wenhua Zhang for reporting this issue. - docs: added a warning for ngx.var.VARIABLE that memory is allocated in the per-request memory pool. thanks lilydjwg.
- docs: made it clear why
returnis recommended to be used with ngx.exit(). thanks Antoine. - docs: massive wording improvements from Dayo.
- now we add SrcacheNginxModule before both LuaNginxModule and HeadersMoreNginxModule so that the former's output filter runs after those of the latter.
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!
October 09, 2012
Yichun Zhang (agentzh)
ngx_openresty stable version 1.2.3.8 released
http://openresty.org/#Download
This release is exactly the same as the last development release, 1.2.3.7.
This is the final release based on the Nginx 1.2.3 core. The next (development) release will be based on Nginx 1.2.4 (or later if exists).
Also, I'll start the new 0.7.x series for the ngx_lua module, which will include the new "light threads" API developed on the git "thread" branch of the ngx_lua project. You can see more on ngx_lua's "light threads" in the following post on the openresty-en mailing list:
http://groups.google.com/group/openresty-en/browse_thread/thread/c14e27a459964056
You're still very welcome to comment on this new feature :)
The following components are bundled with this release:
- LuaJIT-2.0.0-beta10
- array-var-nginx-module-0.03rc1
- auth-request-nginx-module-0.2
- drizzle-nginx-module-0.1.4
- echo-nginx-module-0.41
- encrypted-session-nginx-module-0.02
- form-input-nginx-module-0.07rc5
- headers-more-nginx-module-0.18
- iconv-nginx-module-0.10rc7
- lua-5.1.5
- lua-cjson-1.0.3
- lua-rds-parser-0.05
- lua-redis-parser-0.10
- lua-resty-dns-0.08
- lua-resty-memcached-0.08
- lua-resty-mysql-0.10
- lua-resty-redis-0.14
- lua-resty-string-0.06
- lua-resty-upload-0.03
- memc-nginx-module-0.13rc3
- nginx-1.2.3
- ngx_coolkit-0.2rc1
- ngx_devel_kit-0.2.17
- ngx_lua-0.6.10
- ngx_postgres-1.0rc2
- rds-csv-nginx-module-0.05rc2
- rds-json-nginx-module-0.12rc10
- redis-nginx-module-0.3.6
- redis2-nginx-module-0.09
- set-misc-nginx-module-0.22rc8
- srcache-nginx-module-0.16
- xss-nginx-module-0.03rc9
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!
October 07, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.3.7 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (development) release, 1.2.3.5:
- upgraded LuaNginxModule to 0.6.10.
- feature: now ngx.req.get_headers() returns a Lua table with keys in the all-lower-case form by default. thanks James Hurst and Matthieu Tourne for the feature request.
- feature: now ngx.req.get_headers() adds an
__indexmetamethod to the resulting Lua table by default, which will automatically normalize the lookup key by converting upper-case letters and underscores in case of a lookup miss. thanks James Hurst and Matthieu Tourne for suggesting this feature. - feature: now ngx.req.get_headers() accepts a second (optional) argument,
raw, for controlling whether to return the original form of the header names (that is, the original letter-case). - feature: added public C API functions
ngx_http_shared_dict_getandngx_http_lua_find_zoneto allow other Nginx C modules or a patched Nginx core to directly access the shared memory dictionaries created by LuaNginxModule. thanks Piotr Sikora for requesting this feature. - bugfix: fixed a compilation warning in the TCP/stream cosocket codebase when using (at least) gcc 3.4.6 for MIPS. thanks Dirk Feytons for reporting this as GitHub issue #162.
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
Have fun!
October 02, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.3.5 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (development) release, 1.2.3.3:
- upgraded LuaNginxModule to 0.6.8.
- bugfix: ngx.re.gmatch might loop infinitely when the pattern matches an empty string. thanks Lance Li and xingxing for tracking this issue down.
- bugfix: pattern matching an empty substring in ngx.re.gmatch did not match at the end of the subject string.
- bugfix: ngx.re.gsub might enter infinite loops because it could not handle patterns matching empty strings properly.
- bugfix: ngx.re.gsub incorrectly skipped matching altogether when the subject string was empty.
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!
September 28, 2012
Yichun Zhang (agentzh)
Test::Nginx 0.21 released
http://search.cpan.org/perldoc?Test::Nginx
It will appear on the CPAN mirror near you in the next few hours or so.
Special thanks go to all our contributors and users :)
Here's the complete change log for this release (compared to the last CPAN release, 0.20, released three months ago):
- feature: added support for SystemTap: the SystemTap white-box testing mode is enabled by setting TEST_NGINX_USE_STAP=1 and by using new test sections "--- stap", "--- stap_out", and "--- stap_out_like".
- feature: added support for new sections "--- udp_listen" and "--- udp_reply" for mocking an internal UDP server.
- feature: added new section "--- udp_reply_delay" and also make "--- udp_reply_delay" and "--- timeout" sections accept time values with a time unit which can be either "s" or "ms".
- feature: added new section "--- udp_query" to test if the UDP query sent to the embeded UDP server is expected.
- feature: added new section "--- tcp_query_len" to work with mockeagain testing modes.
- feature: added support for embedded TCP server by introducing new sections "--- tcp_listen", "--- tcp_query", "--- tcp_reply", and "--- tcp_reply_delay".
- feature: added new section "--- tcp_no_close" to tell the embedded TCP server (if any) never close the connection actively. this is feature is mainly for mocking upstream reply read time out in the middle.
- feature: added new section "--- log_level" to specify the error log level on a test-by-test basis.
- bugfix: we might lose logs at config-time when TEST_NGINX_USE_HUP=1 because we sent HUP before USR1.
- bugfix: be more tolarent when removing the nginx pid file while the nginx process is not running.
- optimize: now we can automatically check the version of the current nginx configuration and retry dozens of times when TEST_NGINX_USE_HUP=1. this speed up the test suite in this mode a lot and also avoid accidental failures due to slow nginx reloads.
- bugfix: try harder when failing to connect to the Nginx server.
- refactor: now we use the standard "return" directive instead of "echo" for detecting nginx config reload completion for the "HUP reload" testing mode.
- refactor: use waitpid() wherever possible.
- bugfix: Parallel::ForkManager does not allow the user calling waitpid directly, or inifinite looping might happen when calling its start() method. now we no longer use this module any more and use the fork() builtin function exclusively.
- bugfix: disabled the ending output "Looks like you ..." when the client socket timed out.
- refactor: now we disabled the access log by default.
- updated the bundled versions of Test::Builder and Test::More modules.
- docs: documented the "--- skip_nginx" and "--- skip_nginx2" sections. thanks Weibin Yao for requesting it.
This class inherits from Test::Base, thus bringing all its declarative power to the Nginx C module testing practices.
Please check out the full documentation on CPAN:
http://search.cpan.org/perldoc?Test::Nginx::Socket
All of our Nginx modules (as well as our lua-resty-* libraries) are using Test::Nginx to drive their test suites.
Please note that this module is completely different from the Test::Nginx module created by Maxim Dounin.
The git repository for this Perl module is hosted on GitHub:
https://github.com/agentzh/test-nginx
Enjoy!
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.3.3 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for helping make this happen!
Below is the complete change log for this release, as compared to the last (development) release, 1.2.3.1:
- upgraded LuaNginxModule to 0.6.7.
- feature: implemented the shdict:flush_expired(max_count?) method for flushing out and removing expired items up to
max_count(or unlimited whenmax_count == 0). thanks Brian Akins for the patch. - optimize: tcpsock:send() now calls
c->send()instead ofngx_output_chain(), which gives about 4% ~ 5% performance boost for a simple test case accessing Redis for several times. - optimize: we now skip processing in the default write event handler when the write event is not ready.
- refactor: the I/O scheduler has been rewritten to keep track of the coroutine associated with each (non-blocking) I/O operation automatically, which paves a way to the upcoming
ngx.threadAPI (aka the "lightweight thread" API). - refactor: now we use a new Nginx subrequest model that bypasses
ngx_http_postpone_filter_modulecompletely, which paves a way for arbitrary order of outputting among subrequests and their parents when thengx.thread APIlands in the near future. - bugfix: the "http finalize non-active request" alerts might happen when subrequests were used. thanks Lance Li for reporting this issue.
- bugfix: reset the subrequest status code when the
ngx_http_upstreamrequest in the subrequest fails due to timeout errors or premature connection close and etc. this fix also requires the nonbuffered-upstream-truncation patch for the Nginx core to cancel a limitation inngx_http_upstream. - bugfix: fixed the gcc error
-Werror=strict-aliasingin the Lua/LuaJIT bytecode loader when-O2or above is used. thanks jinglong for the patch. - bugfix: the main request might be prematurely terminated if a subrequest issued by ngx.location.capture (or its friends) was finalized with error codes.
- bugfix: the Nginx built-in resolver might not be destroyed in time when it was used by ngx.socket.tcp and ngx.socket.udp.
- bugfix: coroutine.status() returned
suspendedfornormalcoroutines. - bugfix: coroutine.resume() did not return an error immediately when operating on
normalcoroutines. - bugfix: when the entry coroutine was yielded by coroutine.yield() then after it was resumed automatically its status would still be
suspended. - bugfix: the write event timer might not be removed in time in ngx.flush(true) when
ngx_handle_write_eventfailed. - bugfix: always remove the read event timer during downstream cosocket finalization if it is not removed yet.
- bugfix: ngx.flush(true) might not return immediately when it should.
- bugfix: the
resume_handlerfield of the subrequestctxwas not properly initialized. - feature: added new dtrace static probes
http-lua-user-coroutine-yieldandhttp-lua-entry-coroutine-yield. - docs: fixed the documentation for ngx.req.set_header and made it clear that the modified request headers will be inherited by the subrequests by default. thanks James Hurst for reporting this issue.
- docs: documented the trick for doing background asynchronous jobs by using ngx.eof() +
keepalive_timeout 0. thanks Lance Li for the suggestion.
- feature: implemented the shdict:flush_expired(max_count?) method for flushing out and removing expired items up to
- upgraded LuaRedisParserLibrary to 0.10.
- bugfix: Lua stack overflow would happen when too many Redis arguments were passed into the build_query method. thanks Guo Yin for reporting this issue.
- upgraded LuaRestyDNSLibrary to 0.08.
- feature: added new method tcp_query to enforce pure TCP transportation for the DNS queries.
- feature: added support for TCP retries when the UDP reply gets truncated.
- feature: added support for
PTRqueries and records. - feature: added support for
TXTqueries and records. - feature: added support for
NSqueries and records. - bugfix: the udp resolver did not discard DNS replies with unmatched IDs for 128 times as originally designed.
- upgraded LuaRestyRedisLibrary to 0.14.
- optimize: now we do the string concatenation for Redis queries on the Lua land instead of on the C land, which gives 6% ~ 7% over-all performance boost when using LuaJIT 2.0 beta10.
- docs: fixed a typo in the sample code. thanks xingxing for reporting it.
- upgraded LuaRestyMemcachedLibrary to 0.08.
- feature: added new option
key_transformto the new method to allow the user to override the default escaping and unescaping methods for Memcached keys. thanks Matthieu Tourne for the patch. - bugfix: now the new method will return a string describing the error as the second return value in case of failures.
- docs: added more documentation for the set_keepalive method.
- docs: documented that this library cannot be used in those contexts where the LuaNginxModule cosocket API is unavailable.
- docs: documented that storing the object instance into Lua module-level variables will result in failures for concurrent requests.
- feature: added new option
- upgraded SrcacheNginxModule to 0.16.
- bugfix: srcache_fetch would use truncated responses from MemcNginxModule or other upstream modules. this usually happened when the upstream read timer was expired or the upstream prematurely closed the connection. this fix also requires the nonbuffered-upsteram-truncation patch to cancel a limitation in the Nginx core. thanks Bryan Alger for reporting the issue.
- bugfix: the main request response was not discarded by srcache_store when there was an error in the last minute (like a read-timeout error or premature connection close happens when
ngx_http_upstreamreads the upstream response body). this fix also requires the nonbuffered-upstream-truncation patch for the Nginx core to cancel a limitation inngx_http_upstream. - bugfix: the main request might prematurely terminate if the srcache_store subrequest was finalized with error codes.
- upgraded Redis2NginxModule to 0.09.
- bugfix: directives redis2_query, redis2_literal_raw_query, and redis2_raw_queries could not be inherited automatically by the
location ifblocks, resulting in the "no redis2 query specified or the query is empty" error. thanks Tomasz Prus for the patch.
- bugfix: directives redis2_query, redis2_literal_raw_query, and redis2_raw_queries could not be inherited automatically by the
- feature: updated the dtrace patch to add new static probe
create-pool-done. - feature: updated the dtrace patch to include new tapset functions
ngx_indent,ngx_http_subreq_depth, andngx_http_req_parent. - bugfix: added the nonbuffered-upstream-truncation patch for the Nginx core to make
ngx_http_upstreamprovide a way in the context of a subrequest to signal the parent of errors when upstream data truncation happens. thanks Bryan Alger for reporting this issue. (This is a temporary solution and I'll work on a new patch as per Maxim Dounin's suggestions.) - bugfix: applied the channel-uninit-params patch for the Nginx core to fix Valgrind/Memcheck warnings about unitialized bytes in the parameters of
sendmsg. - feature: updated the allow_request_body_updating patch to define the
HAVE_ALLOW_REQUEST_BODY_UPDATING_PATCHmacro.
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
Have fun!
August 23, 2012
Yichun Zhang (agentzh)
ngx_openresty devel version 1.2.3.1 released
http://openresty.org/#Download
Special thanks go to all our contributors and users for making this happen!
Below is the complete change log for this release, as compared to the last (stable) release, 1.2.1.14:
- upgraded the Nginx core to 1.2.3.
- see http://nginx.org/en/CHANGES-1.2 for changes.
- upgraded LuaNginxModule to 0.6.2.
- feature: (re)implemented the standard Lua coroutine API, which means that the user is now free to create and run their own coroutines within the boilerplate coroutine created automatically by LuaNginxModule. thanks chaoslawful and jinglong for the design and implementation.
- feature: added new dtrace static probes for the user coroutine mechanism:
http-lua-coroutine-createandhttp-lua-coroutine-resume. - feature: added new dtrace static probes for the cosocket mechanism:
http-lua-socket-tcp-send-start,http-lua-socket-tcp-receive-done, andhttp-lua-socket-tcp-setkeepalive-buf-unread. - bugfix: the send timeout timer for downstream output was not deleted in time in our write event handler, which might result in request abortion for long running requests. thanks Demiao Lin (ldmiao) for reporting this issue.
- bugfix: tcpsock:send() might send garbage if it was not the first call: we did not properly initialize the chain writer ctx for every
send()call. thanks Zhu Dejiang for reporting this issue. - bugfix: the
ngx_http_lua_probe.hheader file was not listed in theNGX_ADDON_DEPSlist in theconfigfile. - optimize: removed unnecessary code that was for the old coroutine abortion mechanism based on Lua exceptions. we no longer need that at all because we have switched to using coroutine yield to abort the current coroutine for
ngx.exec,ngx.exit,ngx.redirect, andngx.req.set_uri(uri, true).
- upgraded LuaRestyDNSLibrary to 0.06.
- feature: added support for MX type resource records.
- feature: unrecognized types of resource records will return their raw resource data (RDATA) as the
rdataLua table field.
- upgraded LuaRestyRedisLibrary to 0.13.
- feature: added new method read_reply, mostly for using the Redis Pub/Sub API.
- feature: added new class method add_commands to allow adding support for new Redis commands on-the-fly. thanks Praveen Saxena for requesting this feature.
- docs: added a code sample for using the Redis transactions.
- upgraded DrizzleNginxModule to 0.1.4.
- bugfix: the
open socket #N left in connectionalerts would appear in the nginx error log file when the MySQL/Drizzle connection pool was used and the worker process was shutting down.
- bugfix: the
- upgraded PostgresNginxModule to 1.0rc2.
- bugfix: the
open socket #N left in connectionalerts would appear in the nginx error log file when the PostgreSQL connection pool was used and the worker process was shutting down. - bugfix: removed the useless http-cache related code from
ngx_postgres_upstream_finalize_requestto suppress clang warnings.
- bugfix: the
- added more dtrace static probes to the Nginx core:
timer-add,timer-del, andtimer-expire. - added more systemtap tapset functions:
ngx_chain_next,ngx_chain_writer_ctx_out,ngx_chain_dump, andngx_iovec_dump.
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!




