Great!!<br><br><div class="gmail_quote">2011/11/3 agentzh <span dir="ltr"><<a href="mailto:agentzh@gmail.com">agentzh@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi, folks!<br><div class="gmail_quote"><br>I'm happy to announce that the new stable release of ngx_openresty, 1.0.8.26, has just been kicked out of door:<br><br>  <a href="http://openresty.org/#Download" target="_blank">http://openresty.org/#Download</a><br>

<br>
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 <i>lot</i> of bug fixes and new features.<br><br>Special thanks go to all our contributors and users to help make this happen over the last month :)<br>

<br>Here goes the complete change log for this release, as compared to the last stable release, 1.0.6.22, released nearly a month ago:<br>
<div><ul><li> upgraded the Nginx core to 1.0.8.</li><li> upgraded <a title="LuaNginxModule - ZhangYichun, Fri 26 Aug 2011 09:10:00 AM CST">LuaNginxModule</a> to 0.3.1rc23.<ul>
<li> feature: added new directive <code>lua_shared_dict</code>: <a title="External link to http://wiki.nginx.org/HttpLuaModule#lua_shared_dict" href="http://wiki.nginx.org/HttpLuaModule#lua_shared_dict" target="_blank">http://wiki.nginx.org/HttpLuaModule#lua_shared_dict</a></li>


<li> feature: added Lua API for the shm-based dictionary: <a title="External link to http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT" href="http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT" target="_blank">http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT</a></li>


<li> feature: now we apply the patch to the nginx core so as to allow main request body modifications.</li><li> feature: added new Lua API <code>ngx.req.set_body_file()</code>: <a title="External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_file" href="http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_file" target="_blank">http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_file</a></li>


<li> feature: added new Lua API <code>ngx.req.set_body_data()</code>: <a title="External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_data" href="http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_data" target="_blank">http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_data</a></li>


<li> feature: added new Lua functions <code>ngx.req.read_body()</code>, <code>ngx.req.discard_body()</code>, <code>ngx.req.get_body_data()</code>, and <code>ngx.req.get_body_file()</code>. see the docs here: <a title="External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.read_body" href="http://wiki.nginx.org/HttpLuaModule#ngx.req.read_body" target="_blank">http://wiki.nginx.org/HttpLuaModule#ngx.req.read_body</a></li>


<li> feature: now we implemented <code>ngx.req.set_uri()</code> and <code>ngx.req.set_uri_args()</code> to emulate <code>ngx_rewrite</code>'s <code>rewrite</code> directive (without <code>redirect</code> or <code>permanent</code> modifiers). thanks Vladimir Protasov (utros) and Nginx User.</li>


<li> feature: added constant <code>ngx.HTTP_METHOD_NOT_IMPLEMENTED</code> (501). thanks Nginx User.</li><li> feature: now for HTTP 1.0 requests, we disable the automatic full buffering mode if the user sets the <code>Content-Length</code>
 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.</li><li> bugfix: now we properly support setting the <code>Cache-Control</code> response header via the <code>ngx.header.HEADER</code> interface.</li><li> bugfix: no longer set header hash to 1. use the <code>ngx_hash_key_lc</code> instead.</li>


<li> bugfix: now we skip rewrite phase Lua handlers altogether if <code>ngx_rewrite</code>'s <code>rewrite</code> directive issue a location re-lookup by changing URIs (but not including rewrite ... break). thanks Nginx User.</li>


<li> bugfix: fixed hanging issues when using <code>ngx.exec()</code> within <code>rewrite_by_lua</code> and <code>access_by_lua</code>. thanks Nginx User for reporting it.</li><li> bugfix: <code>lua_need_request_body</code> should not skip requests with methods other than <code>POST</code> and <code>PUT</code>. thanks Nginx User.</li>


<li> bugfix: <code>ndk.set_var.DIRECTIVE</code> had a memory issue and might pass empty argument values to the directive being called. thanks dannynoonan.</li><li> bugfix: no longer free request body buffers that are not allocated by ourselves.</li>


<li> bugfix: now we allow setting <code>ngx.var.VARIABLE</code> to <code>nil</code>.</li><li> bugfix: now we explicitly clear all the modules' contexts before dump to named location with <code>ngx.exec</code>. thanks Nginx User.</li>


</ul></li><li> upgraded <a title="EchoNginxModule - ZhangYichun, Fri 26 Aug 2011 09:12:00 AM CST">EchoNginxModule</a> to 0.37rc7.<ul><li> bugfix: fixed a memory issue in both <code>echo_sleep</code> and <code>echo_blocking_sleep</code>: we should not pass <code>ngx_str_t</code> strings to <code>atof()</code> which expects C strings.</li>


<li> bugfix: now we explicitly clear all the modules' contexts before dump to named location with <code>echo_exec</code>.</li><li> bugfix: bugfix: <code>echo_exec</code> may hang when running after <code>echo_sleep</code> (or other I/O interruption calls): we should have called <code>ngx_http_finalize_request</code> on <code>NGX_DONE</code> to decrement <code>r->main->count</code> anyway.</li>


<li> bugfix: now we properly set the <code>Content-Length</code> request header for subrequests.</li></ul></li><li> upgraded <a title="SrcacheNginxModule - ZhangYichun, Fri 26 Aug 2011 09:11:00 AM CST">SrcacheNginxModule</a> to 0.13rc2.<ul>


<li> feature: implemented response status line and general response header cachin and added new directives <code>srcache_store_hide_header</code> and <code>srcache_store_pass_header</code> to control which headers to cache and which not.</li>


<li> feature: added new directive <code>srcache_response_cache_control</code> to control whether honor response headers <code>Cache-Control</code> and <code>Expires</code>, default <code>on</code>.</li><li> feature: we disable <code>srcache_store</code> automatically by default when <code>Cache-Control: max-age=0</code> and <code>Expires: <date no more recently than now></code> are seen.</li>


<li> feature: implemented builtin nginx variable <code>$srcache_expire</code> for automatic expiration time calculation based on response headers <code>Cache-Control</code> (<code>max-age</code>) and <code>Expires</code>; also added new directives <code>srcache_max_expire</code> and <code>srcache_default_expire</code>.</li>


<li> feature: implemented the <code>srcache_store_no_cache</code> directive; now by default, we do not store responses with the header <code>Cache-Control: no-cache</code> into the cache.</li><li> feature: implemented <code>the srcache_store_no_store directive</code> (default <code>off</code>). Now by default, responses with the header <code>Cache-Control: no-store</code> will not be stored into the cache.</li>


<li> feature: implemented the <code>srcache_store_private</code> directive to control whether to store responses with the header <code>Cache-Control: private</code>.</li><li> feature: implemented the <code>srcache_request_cache_control</code> directive to allow request headers <code>Cache-Control: no-cache</code> or <code>Pragma: no-cache</code> to force bypassing cache lookup. it also honors the request header <code>Cache-Control: no-store</code>. this directive is turned off by default.</li>


<li> feature: now we check response header <code>Content-Encoding</code> by default and a non-empty header value will <code>skip srcache_store</code>; also introduced a new directive named <code>srcache_ignore_content_encoding</code> to ignore this response header.</li>


<li> feature: implemented the <code>srcache_methods</code> directive to specify request methods that are cacheable, by default, only <code>GET</code> and <code>HEAD</code> are cacheable.</li><li> bugfix: we no longer set header hash to 1; we use <code>ngx_hash_key_lc</code> instead.</li>


<li> bugfix: when we skip <code>srcache_fetch</code> by means of <code>srcache_fetch_skip</code>, we should not automatically skip <code>srcache_store</code>.</li><li> bugfix: now we ignore the <code>Content-Length</code> header (if any) of the main request for the subrequests.</li>


<li> bugfix: there might be a segfault when failing to allocate memory in <code>ngx_http_srcache_add_copy_chain</code>. thanks Shaun savage.</li><li> feature: implemented new directive <code>srcache_store_statuses</code> to allow the user to specify the response status code list that is to be stored into the cache.</li>


<li> bugfix: we now only cache 200, 301, and 302 responses by default.</li></ul></li><li> upgraded <a title="IconvNginxModule - ZhangYichun, Wed 22 Jun 2011 03:36:00 PM CST">IconvNginxModule</a> to 0.10rc5.<ul>
<li> bugfix: fixed <code>-Wset-but-not-used</code> warnings issued by gcc 4.6.0. thanks Zhi Jiale (Calio).</li></ul></li><li> upgraded <a title="HeadersMoreNginxModule - ZhangYichun, Fri 26 Aug 2011 09:10:00 AM CST">HeadersMoreNginxModule</a> to 0.16rc3.<ul>


<li> bugfix: we should set header hash using <code>ngx_hash_key_lc</code>, not simply to 1.</li><li> bugfix: fixed setting <code>Cache-Control</code> response headers. we should properly prepare the <code>r->cache_control</code> array as well.</li>


</ul></li><li> upgraded <a title="RdsJsonNginxModule - ZhangYichun, Tue 21 Jun 2011 04:40:00 PM CST">RdsJsonNginxModule</a> to 0.12rc6.<ul><li> bugfix: fixed compatibility with nginx 1.1.4+.</li>
</ul></li><li> upgraded <a title="RdsCsvNginxModule - ZhangYichun, Wed 31 Aug 2011 03:42:00 PM CST">RdsCsvNginxModule</a> to 0.04.<ul><li> bugfix: fixed compatibility issues with nginx 1.1.4+.</li>
<li> optimization: now we only register our filters when <code>rds_csv</code> is actually used in <code>nginx.conf</code>.</li></ul></li><li> upgraded <a title="Redis2NginxModule - ZhangYichun, Tue 06 Sep 2011 04:34:00 PM CST">Redis2NginxModule</a> to 0.08rc1.<ul>


<li> bugfix: fixed compatibility with nginx 1.1.4+.</li></ul></li><li> upgraded <a title="DrizzleNginxModule - ZhangYichun, Fri 26 Aug 2011 09:12:00 AM CST">DrizzleNginxModule</a> to 0.1.2rc2.<ul>
<li> bugfix: fixed compatibility with nginx 1.1.4+</li></ul></li><li> upgraded <a title="MemcNginxModule - ZhangYichun, Fri 26 Aug 2011 09:11:00 AM CST">MemcNginxModule</a> to 0.13rc1.<ul>
<li> bugfix: fixed compatibility with nginx 1.1.4+.</li></ul></li><li> upgraded <a title="SetMiscNginxModule - ZhangYichun, Fri 26 Aug 2011 09:10:00 AM CST">SetMiscNginxModule</a> to v0.22rc3.<ul>
<li> minor code cleanup.</li></ul></li><li> applied the patch to the Nginx core that always clears all modules' contexts in <code>ngx_http_named_location</code>.</li><li> applied the patch for the variable-header-ignore-no-hash issue. see <a title="External link to http://forum.nginx.org/read.php?29,216062" href="http://forum.nginx.org/read.php?29,216062" target="_blank">http://forum.nginx.org/read.php?29,216062</a> for details.</li>


</ul></div>As always, you're welcome to report bugs and feature requests either here or directly to me :)<br><br>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 ;)<br>


<br>OpenResty (aka. <span>ngx_openresty</span>) is a full-fledged web application server by bundling the standard <a title="Nginx - ZhangYichun, Tue 21 Jun 2011 04:24:00 PM CST">Nginx</a> core, lots of <a title="External link to http://wiki.nginx.org/3rdPartyModules" href="http://wiki.nginx.org/3rdPartyModules" target="_blank">3rd-party Nginx modules</a>, as well as most of their external dependencies.<br>



<br>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+ 
connections.<br><br>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.<br><br>You can find more details on the homepage of <span>ngx_openresty</span> here:<br><br>    <a href="http://openresty.org/" target="_blank">http://openresty.org</a><br>


<br>Have fun!<span class="HOEnZb"><font color="#888888"><br>-agentzh<br>
</font></span></div><br>
<br>_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Wendal Chen<br><a href="http://t.sina.com.cn/1068040557?s=6uyXnP" target="_blank"><img alt="" src="http://service.t.sina.com.cn/widget/qmd/1068040557/e0a18d12/3.png?rnd=1302310535458" border="0"></a><br>
<br>