<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>OpenResty</title>
<description>a powerful web app server by extending nginx</description>
<language>en</language>
<copyright>Copyright 2012 ZhangYichun</copyright>
<pubDate>Tue, 14 Feb 2012 11:01:06 GMT</pubDate>
<lastBuildDate>Tue, 14 Feb 2012 11:01:06 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>TiddlyWiki 2.6.2</generator>
<item>
<title>ChangeLog1000011</title>
<description>&lt;a tiddler=&quot;ChangeLog1000011&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt; Devel Release 1.0.11.11 - 14 February 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.5.0rc7.&lt;ul&gt;&lt;li&gt; bugfix: cosocket API could not be used before &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; class=&quot;externalLink&quot;&gt;ngx.location.capture&lt;/a&gt; and its friends for fast network access: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#tcpsock:send&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#tcpsock:send&quot; class=&quot;externalLink&quot;&gt;tcpsock:send()&lt;/a&gt; method did not reset &lt;code&gt;u-&amp;gt;waiting&lt;/code&gt; properly. thanks 欧远宁.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.11.9 - 13 February 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.5.0rc6.&lt;ul&gt;&lt;li&gt; bugfix: could not compile with nginx 0.8.x. thanks 欧远宁. this bug had appeared in &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; v0.5.0rc1.&lt;/li&gt;&lt;li&gt; feature: added the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.sha1_bin&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.sha1_bin&quot; class=&quot;externalLink&quot;&gt;ngx.sha1_bin&lt;/a&gt; method which returns the binary form of the &lt;code&gt;SHA-1&lt;/code&gt; digest.&lt;/li&gt;&lt;li&gt; bugfix: we incorrectly allowed &lt;code&gt;ngx.null&lt;/code&gt; in the string table argument to &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#tcpsock:send&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#tcpsock:send&quot; class=&quot;externalLink&quot;&gt;cosocket:send()&lt;/a&gt; method.&lt;/li&gt;&lt;li&gt; feature: allow use of ngx.null in &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.log&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.log&quot; class=&quot;externalLink&quot;&gt;ngx.log()&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#print&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#print&quot; class=&quot;externalLink&quot;&gt;print()&lt;/a&gt; arguments.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; added Piotr Sikora's &lt;a tiddlylink=&quot;CoolkitNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#CoolkitNginxModule&quot; href=&quot;null#CoolkitNginxModule&quot; class=&quot;externalLink null&quot;&gt;CoolkitNginxModule&lt;/a&gt; 0.2rc1 to the bundle, which is also enabled by default.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.11.7 - 7 February 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.5.0rc5.&lt;ul&gt;&lt;li&gt; feature: added constant &lt;code&gt;ngx.null&lt;/code&gt; which is a &lt;code&gt;NULL&lt;/code&gt; light userdata to represent &lt;code&gt;nil&lt;/code&gt; values in Lua tables and etc. this is compatible with at least &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.kyne.com.au/~mark/software/lua-cjson.php&quot; href=&quot;http://www.kyne.com.au/%7Emark/software/lua-cjson.php&quot; class=&quot;externalLink&quot;&gt;lua-cjson&lt;/a&gt; library's &lt;code&gt;cjson.null&lt;/code&gt; constant.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.11.5 - 7 February 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.5.0rc4.&lt;ul&gt;&lt;li&gt; bugfix: setting &lt;code&gt;ngx.header.last_modified&lt;/code&gt; was not implemented fully. thanks Brian Akins.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.11.3 - 6 February 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.5.0rc3.&lt;ul&gt;&lt;li&gt; feature: now &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#tcpsock:send&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#tcpsock:send&quot; class=&quot;externalLink&quot;&gt;tcpsocket:send()&lt;/a&gt; method supports lua tables of string fragments which can save unnecessary string concatenation operations on the Lua land that are usually quite expensive.&lt;/li&gt;&lt;li&gt; bugfix: fixed issues in debugging logs for the cosocket API.&lt;/li&gt;&lt;li&gt; feature: added user flags support to the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT&quot; class=&quot;externalLink&quot;&gt;shared dictionary API&lt;/a&gt;. thanks Brian Akins.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaRedisParserLibrary&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaRedisParserLibrary&quot; href=&quot;null#LuaRedisParserLibrary&quot; class=&quot;externalLink null&quot;&gt;LuaRedisParserLibrary&lt;/a&gt; to 0.09rc6.&lt;ul&gt;&lt;li&gt; bugfix: remove unneeded string push operations. thanks Brian Akins.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.11.1 - 2 February 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded the Nginx core to 1.0.11.&lt;ul&gt;&lt;li&gt; see the changes here: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://nginx.org/en/CHANGES-1.0&quot; href=&quot;http://nginx.org/en/CHANGES-1.0&quot; class=&quot;externalLink&quot;&gt;http://nginx.org/en/CHANGES-1.0&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.5.0rc1.&lt;ul&gt;&lt;li&gt; feature: implemented the coroutine-based TCP and Unix Domain client socket API (aka the &quot;cosocket&quot; API) that is mostly compatible with the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://w3.impa.br/~diego/software/luasocket/tcp.html&quot; href=&quot;http://w3.impa.br/%7Ediego/software/luasocket/tcp.html&quot; class=&quot;externalLink&quot;&gt;LuaSocket&lt;/a&gt; library.&lt;/li&gt;&lt;li&gt; feature: implemented built-in connection pool support for the cosocket API.&lt;/li&gt;&lt;li&gt; feature: added new function &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.socket&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.socket&quot; class=&quot;externalLink&quot;&gt;ngx.req.socket()&lt;/a&gt; to return a cosocket object for the downstream connection so as to do streaming request body reading. thanks Taylor Weibley for sponsoring the development work.&lt;/li&gt;&lt;li&gt; optimization: optimized the chain-link and buf recycle logic for the subrequest API and make it share free buffers with the cosocket API.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;PostgresNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#PostgresNginxModule&quot; href=&quot;null#PostgresNginxModule&quot; class=&quot;externalLink null&quot;&gt;PostgresNginxModule&lt;/a&gt; to 0.9.&lt;ul&gt;&lt;li&gt; bugfix: Fix compatibility with poll, select and /dev/poll event models.&lt;/li&gt;&lt;li&gt; bugfix: Fix compatibility with PostgreSQL 9.x.&lt;/li&gt;&lt;li&gt; bugfix: Fix compatibility with nginx-1.1.4+.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;See &lt;a tiddlylink=&quot;ChangeLog1000010&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000010&quot; href=&quot;null#ChangeLog1000010&quot; class=&quot;externalLink null&quot;&gt;ChangeLog1000010&lt;/a&gt; for change log for ngx_openresty 1.0.10.x.</description>
<link>null#ChangeLog1000011</link>
<pubDate>Tue, 14 Feb 2012 11:01:06 GMT</pubDate>

</item>
<item>
<title>Download</title>
<description>&lt;a tiddler=&quot;Download&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt;Releases&lt;/h1&gt;&lt;h2&gt; Stable release&lt;/h2&gt;Most of the users should use the current release, i.e., the latest stable release.&lt;br&gt;&lt;ul&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.10.48.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.10.48.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.10.48.tar.gz&lt;/a&gt; 2.6MB &lt;a tiddlylink=&quot;ChangeLog1000010&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000010&quot; href=&quot;null#ChangeLog1000010&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 1 February 2012&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt; Development release&lt;/h2&gt;Development releases are for developers or brave users to try out new bug fixes and new features.&lt;br&gt;&lt;ul&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.11.11.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.11.11.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.11.11.tar.gz&lt;/a&gt; 2.6MB &lt;a tiddlylink=&quot;ChangeLog1000011&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000011&quot; href=&quot;null#ChangeLog1000011&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 14 February 2012&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt; Legacy releases&lt;/h2&gt;Sometimes, users may want to download old releases.&lt;br&gt;&lt;ul&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.10.44.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.10.44.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.10.44.tar.gz&lt;/a&gt; 2.5MB &lt;a tiddlylink=&quot;ChangeLog1000010&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000010&quot; href=&quot;null#ChangeLog1000010&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 16 January 2012&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.10.24.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.10.24.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.10.24.tar.gz&lt;/a&gt; 2.5MB &lt;a tiddlylink=&quot;ChangeLog1000010&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000010&quot; href=&quot;null#ChangeLog1000010&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 11 December 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.9.10.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.9.10.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.9.10.tar.gz&lt;/a&gt; 2.5MB &lt;a tiddlylink=&quot;ChangeLog1000009&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000009&quot; href=&quot;null#ChangeLog1000009&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 16 November 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.8.26.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.8.26.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.8.26.tar.gz&lt;/a&gt; 2.5MB &lt;a tiddlylink=&quot;ChangeLog1000008&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000008&quot; href=&quot;null#ChangeLog1000008&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 3 November 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.6.22.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.6.22.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.6.22.tar.gz&lt;/a&gt; 2.4MB &lt;a tiddlylink=&quot;ChangeLog1000006&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000006&quot; href=&quot;null#ChangeLog1000006&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 7 October 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.6.12.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.6.12.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.6.12.tar.gz&lt;/a&gt; 2.4MB &lt;a tiddlylink=&quot;ChangeLog1000006&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000006&quot; href=&quot;null#ChangeLog1000006&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 21 September 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.5.1.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.5.1.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.5.1.tar.gz&lt;/a&gt; 2.4MB &lt;a tiddlylink=&quot;ChangeLog1000005&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000005&quot; href=&quot;null#ChangeLog1000005&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 4 September 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.4.2.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.4.2.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.4.2.tar.gz&lt;/a&gt; 2.2MB &lt;a tiddlylink=&quot;ChangeLog1000004&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000004&quot; href=&quot;null#ChangeLog1000004&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 9 August 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.4.1.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.4.1.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.4.1.tar.gz&lt;/a&gt; 2.3MB &lt;a tiddlylink=&quot;ChangeLog1000004&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000004&quot; href=&quot;null#ChangeLog1000004&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 30 July 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-1.0.4.0.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-1.0.4.0.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-1.0.4.0.tar.gz&lt;/a&gt; 2.3MB &lt;a tiddlylink=&quot;ChangeLog1000004&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000004&quot; href=&quot;null#ChangeLog1000004&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 12 July 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.9.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.9.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-0.8.54.9.tar.gz&lt;/a&gt; 2.2MB &lt;a tiddlylink=&quot;ChangeLog8054&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog8054&quot; href=&quot;null#ChangeLog8054&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 8 July 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.8.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.8.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-0.8.54.8.tar.gz&lt;/a&gt; 2.2MB &lt;a tiddlylink=&quot;ChangeLog8054&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog8054&quot; href=&quot;null#ChangeLog8054&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 1 July 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.7.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.7.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-0.8.54.7.tar.gz&lt;/a&gt; 2.7MB &lt;a tiddlylink=&quot;ChangeLog8054&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog8054&quot; href=&quot;null#ChangeLog8054&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt; - 27 June 2011&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.6.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.6.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-0.8.54.6.tar.gz&lt;/a&gt; 2.7MB &lt;a tiddlylink=&quot;ChangeLog8054&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog8054&quot; href=&quot;null#ChangeLog8054&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.5.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.5.tar.gz&quot; class=&quot;externalLink&quot;&gt;ngx_openresty-0.8.54.5.tar.gz&lt;/a&gt; 2.7MB &lt;a tiddlylink=&quot;ChangeLog8054&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog8054&quot; href=&quot;null#ChangeLog8054&quot; class=&quot;externalLink null&quot;&gt;Changes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;See &lt;a tiddlylink=&quot;Installation&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Installation&quot; href=&quot;null#Installation&quot; class=&quot;externalLink null&quot;&gt;Installation&lt;/a&gt; for installation instructions.&lt;br&gt;</description>
<link>null#Download</link>
<pubDate>Tue, 14 Feb 2012 10:59:22 GMT</pubDate>

</item>
<item>
<title>CoolkitNginxModule</title>
<description>This module is collection of small and useful Nginx add-ons.&lt;br&gt;&lt;br&gt;Project homepage and documentation: &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/FRiCKLE/ngx_coolkit/&quot; href=&quot;https://github.com/FRiCKLE/ngx_coolkit/&quot; class=&quot;externalLink&quot;&gt;https://github.com/FRiCKLE/ngx_coolkit/&lt;/a&gt;&lt;br&gt;&lt;br&gt;This module is enabled by default and could be disabled by passing &lt;code&gt;--without-http_coolkit_module&lt;/code&gt; option to &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;'s &lt;code&gt;./configure&lt;/code&gt; script.&lt;br&gt;</description>
<link>null#CoolkitNginxModule</link>
<pubDate>Mon, 13 Feb 2012 12:59:00 GMT</pubDate>

</item>
<item>
<title>Resources</title>
<description>&lt;a tiddler=&quot;Resources&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt; English Articles&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; My beautiful dark twisted reverse-proxy LRU cache&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://mikeferrier.com/2011/05/14/my-beautiful-dark-twisted-reverse-proxy-LRU-cache/&quot; href=&quot;http://mikeferrier.com/2011/05/14/my-beautiful-dark-twisted-reverse-proxy-LRU-cache/&quot; class=&quot;externalLink&quot;&gt;http://mikeferrier.com/2011/05/14/my-beautiful-dark-twisted-reverse-proxy-LRU-cache/&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;ul&gt;&lt;li&gt; Day 41 - Setting up ngx_openresty (WAS: testing Test::Nginx) &lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.nginx-discovery.com/2011/03/day-41-setting-up-ngxopenresty-was.html&quot; href=&quot;http://www.nginx-discovery.com/2011/03/day-41-setting-up-ngxopenresty-was.html&quot; class=&quot;externalLink&quot;&gt;http://www.nginx-discovery.com/2011/03/day-41-setting-up-ngxopenresty-was.html&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;h1&gt; Chinese Articles&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; An introduction to &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wdicc.com/intro-openresty/&quot; href=&quot;http://wdicc.com/intro-openresty/&quot; class=&quot;externalLink&quot;&gt;http://wdicc.com/intro-openresty/&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;ul&gt;&lt;li&gt; Nginx 3rd-Party Module Experiments Journal&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://chenxiaoyu.org/2011/10/30/nginx-modules.html&quot; href=&quot;http://chenxiaoyu.org/2011/10/30/nginx-modules.html&quot; class=&quot;externalLink&quot;&gt;http://chenxiaoyu.org/2011/10/30/nginx-modules.html&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;ul&gt;&lt;li&gt; Recommending &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; - An Nginx Version with Fully Capable Addons&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wendal.net/338.html&quot; href=&quot;http://wendal.net/338.html&quot; class=&quot;externalLink&quot;&gt;http://wendal.net/338.html&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;ul&gt;&lt;li&gt; Constructing Efficient and Transparent Caching Mechanism with &lt;a tiddlylink=&quot;MemcNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#MemcNginxModule&quot; href=&quot;null#MemcNginxModule&quot; class=&quot;externalLink null&quot;&gt;MemcNginxModule&lt;/a&gt; and &lt;a tiddlylink=&quot;SrcacheNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SrcacheNginxModule&quot; href=&quot;null#SrcacheNginxModule&quot; class=&quot;externalLink null&quot;&gt;SrcacheNginxModule&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.codinglabs.org/html/nginx-memc-and-srcache.html&quot; href=&quot;http://www.codinglabs.org/html/nginx-memc-and-srcache.html&quot; class=&quot;externalLink&quot;&gt;http://www.codinglabs.org/html/nginx-memc-and-srcache.html&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;ul&gt;&lt;li&gt; The Nginx Session Module&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://chenxiaoyu.org/2011/11/09/nginx-session.html&quot; href=&quot;http://chenxiaoyu.org/2011/11/09/nginx-session.html&quot; class=&quot;externalLink&quot;&gt;http://chenxiaoyu.org/2011/11/09/nginx-session.html&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;ul&gt;&lt;li&gt; Nginx-Lua HTTP 401 Basic Authentication&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://chenxiaoyu.org/2012/02/08/nginx-lua-401-auth.html&quot; href=&quot;http://chenxiaoyu.org/2012/02/08/nginx-lua-401-auth.html&quot; class=&quot;externalLink&quot;&gt;http://chenxiaoyu.org/2012/02/08/nginx-lua-401-auth.html&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;ul&gt;&lt;li&gt; Nginx Variable Tutorials&lt;/li&gt;&lt;/ul&gt;&lt;dl&gt;&lt;dd&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://blog.sina.com.cn/openresty&quot; href=&quot;http://blog.sina.com.cn/openresty&quot; class=&quot;externalLink&quot;&gt;http://blog.sina.com.cn/openresty&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;</description>
<link>null#Resources</link>
<pubDate>Wed, 08 Feb 2012 08:45:00 GMT</pubDate>

</item>
<item>
<title>Installation</title>
<description>&lt;a tiddler=&quot;Installation&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;If you haven't downloaded the &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; source code tarball, please go to the &lt;a tiddlylink=&quot;Download&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Download&quot; href=&quot;null#Download&quot; class=&quot;externalLink null&quot;&gt;Download&lt;/a&gt; page first.&lt;br&gt;&lt;br&gt;Basically, building and installing &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; is as simple as&lt;br&gt;&lt;pre&gt;tar xzvf ngx_openresty-VERSION.tar.gz
cd ngx_openresty-VERSION/
./configure --with-luajit
make
make install
&lt;/pre&gt;where &lt;code&gt;VERSION&lt;/code&gt; should be replaced by a concrete version number of &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;, like &lt;code&gt;0.8.54.6&lt;/code&gt;.&lt;br&gt;If you have problems while building or want finer control over the building process, please read on.&lt;br&gt;&lt;h1&gt;Prerequisites&lt;/h1&gt;You should have &lt;code&gt;perl 5.6.1+&lt;/code&gt;, &lt;code&gt;libreadline&lt;/code&gt;, &lt;code&gt;libpcre&lt;/code&gt;, &lt;code&gt;libssl&lt;/code&gt; installed into your system. For Linux, you should also ensure that &lt;code&gt;ldconfig&lt;/code&gt; is in your PATH environment.&lt;br&gt;&lt;h2&gt;Debian and Ubuntu users&lt;/h2&gt;You're recommended to install the following packages using apt-get:&lt;br&gt;&lt;pre&gt;apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl
&lt;/pre&gt;&lt;h2&gt;Fedora and RedHat users&lt;/h2&gt;You're recommended to install the following packages using yum:&lt;br&gt;&lt;pre&gt;yum install readline-devel pcre-devel openssl-devel
&lt;/pre&gt;&lt;h2&gt;Mac OS X (Darwin) users&lt;/h2&gt;You're recommended to install prerequisites PCRE using some package management tool, like &lt;a target=&quot;_blank&quot; title=&quot;External link to http://mxcl.github.com/homebrew/&quot; href=&quot;http://mxcl.github.com/homebrew/&quot; class=&quot;externalLink&quot;&gt;Homebrew&lt;/a&gt;:&lt;br&gt;&lt;pre&gt;brew install pcre
&lt;/pre&gt;Alternatively you can install PCRE from source all by yourself :)&lt;br&gt;&lt;h2&gt;FreeBSD users&lt;/h2&gt;You need to install the following ports:&lt;br&gt;&lt;ul&gt;&lt;li&gt; devel/gmake&lt;/li&gt;&lt;li&gt; security/openssl&lt;/li&gt;&lt;li&gt; devel/pcre&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Solaris 11 users&lt;/h2&gt;You need to install the following packages from the official repository:&lt;br&gt;&lt;ul&gt;&lt;li&gt; gcc-3&lt;/li&gt;&lt;li&gt; SUNWlibm&lt;/li&gt;&lt;/ul&gt;Usually it's just as simple as&lt;br&gt;&lt;pre&gt;pfexec pkg install gcc-3 SUNWlibm
&lt;/pre&gt;&lt;h1&gt;Build OpenResty&lt;/h1&gt;&lt;h2&gt;Download&lt;/h2&gt;download the latest ngx_openresty tarball can be fetched from the &lt;a tiddlylink=&quot;Download&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Download&quot; href=&quot;null#Download&quot; class=&quot;externalLink null&quot;&gt;Download&lt;/a&gt; page and unpack it like this:&lt;br&gt;&lt;pre&gt;tar xzvf ngx_openresty-VERSION.tar.gz
&lt;/pre&gt;where &lt;code&gt;VERSION&lt;/code&gt; should be replaced by real version numbers like &lt;code&gt;0.8.54.6&lt;/code&gt;.&lt;br&gt;&lt;h2&gt;./configure&lt;/h2&gt;Then enter the &lt;code&gt;ngx_openresty-VERSION/&lt;/code&gt; directory, and type the following command to configure:&lt;br&gt;&lt;pre&gt;./configure --with-luajit
&lt;/pre&gt;By default, &lt;code&gt;--prefix=/usr/local/openresty&lt;/code&gt; is assumed. The &lt;code&gt;--with-luajit&lt;/code&gt; option is strongly recommended because &lt;a tiddlylink=&quot;LuaJIT&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaJIT&quot; href=&quot;null#LuaJIT&quot; class=&quot;externalLink null&quot;&gt;LuaJIT&lt;/a&gt; 2.0 can give a nice performance boost in terms of both CPU time and memory footprint and its VM is also fully resume-able, unlike the default standard Lua 5.1 interpreter. Enabling &lt;a tiddlylink=&quot;LuaJIT&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaJIT&quot; href=&quot;null#LuaJIT&quot; class=&quot;externalLink null&quot;&gt;LuaJIT&lt;/a&gt; 2.0 should work on Linux, Mac OS X, &lt;a tiddlylink=&quot;FreeBSD&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#FreeBSD&quot; href=&quot;null#FreeBSD&quot; class=&quot;externalLink null&quot;&gt;FreeBSD&lt;/a&gt;, Solaris, and others. You should only disable &lt;a tiddlylink=&quot;LuaJIT&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaJIT&quot; href=&quot;null#LuaJIT&quot; class=&quot;externalLink null&quot;&gt;LuaJIT&lt;/a&gt; 2.0 when your platform does not support &lt;a tiddlylink=&quot;LuaJIT&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaJIT&quot; href=&quot;null#LuaJIT&quot; class=&quot;externalLink null&quot;&gt;LuaJIT&lt;/a&gt;.&lt;br&gt;&lt;br&gt;You can specify various options, as in&lt;br&gt;&lt;pre&gt;./configure --prefix=/opt/openresty \
            --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module \
            --with-http_postgres_module \
            -j2
&lt;/pre&gt;All of the Nginx configure file options can be used here, including &lt;code&gt;--add-module=PATH&lt;/code&gt;. Try &lt;code&gt;./configure --help&lt;/code&gt; to see more options available.&lt;br&gt;&lt;br&gt;Errors in running the ./configure script can be found in the file &lt;code&gt;build/nginx-VERSION/objs/autoconf.err&lt;/code&gt; where &lt;code&gt;VERSION&lt;/code&gt; should be replaced by a concrete version number of &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;, like &lt;code&gt;0.8.54.6&lt;/code&gt;.&lt;br&gt;&lt;h3&gt;Notes for Solaris users&lt;/h3&gt;For Solaris, it's common to install libraries like OpenSSL to &lt;code&gt;/lib&lt;/code&gt;, so when it complaints about missing OpenSSL and you have indeed already installed it, specify the &lt;code&gt;--with-ld-opt='-L/lib'&lt;/code&gt; option.&lt;br&gt;&lt;h2&gt;make&lt;/h2&gt;Now you can compile everything up using the command&lt;br&gt;&lt;pre&gt;make
&lt;/pre&gt;If your machine has multiple cores and your &lt;code&gt;make&lt;/code&gt; supports the jobserver feature, you can compile things in parallel like this:&lt;br&gt;&lt;pre&gt;make -j2
&lt;/pre&gt;assuming you have 2 CPU cores.&lt;br&gt;&lt;h2&gt;make install&lt;/h2&gt;If all the previous steps go without problems, you can install &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; into your system by typing the command&lt;br&gt;&lt;pre&gt;make install
&lt;/pre&gt;On Linux, it often requires &lt;code&gt;sudo&lt;/code&gt; to gain root access.&lt;br&gt;</description>
<link>null#Installation</link>
<pubDate>Tue, 07 Feb 2012 03:06:00 GMT</pubDate>

</item>
<item>
<title>ReleaseNote</title>
<description></description>
<link>null#ReleaseNote</link>
<pubDate>Thu, 02 Feb 2012 05:01:00 GMT</pubDate>

</item>
<item>
<title>ChangeLog1000010</title>
<description>&lt;a tiddler=&quot;ChangeLog1000010&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt; Stable Release 1.0.10.48 - 1 February 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.4.1.&lt;/li&gt;&lt;/ul&gt;Components bundled with this release:&lt;br&gt;&lt;ul&gt;&lt;li&gt; LuaJIT-2.0.0-beta9&lt;/li&gt;&lt;li&gt; array-var-nginx-module-0.03rc1&lt;/li&gt;&lt;li&gt; auth-request-nginx-module-0.2&lt;/li&gt;&lt;li&gt; drizzle-nginx-module-0.1.2rc6&lt;/li&gt;&lt;li&gt; echo-nginx-module-0.38rc1&lt;/li&gt;&lt;li&gt; encrypted-session-nginx-module-0.02&lt;/li&gt;&lt;li&gt; form-input-nginx-module-0.07rc5&lt;/li&gt;&lt;li&gt; headers-more-nginx-module-0.17rc1&lt;/li&gt;&lt;li&gt; iconv-nginx-module-0.10rc5&lt;/li&gt;&lt;li&gt; lua-5.1.4&lt;/li&gt;&lt;li&gt; lua-cjson-1.0.3&lt;/li&gt;&lt;li&gt; lua-rds-parser-0.04&lt;/li&gt;&lt;li&gt; lua-redis-parser-0.09rc5&lt;/li&gt;&lt;li&gt; memc-nginx-module-0.13rc3&lt;/li&gt;&lt;li&gt; nginx-1.0.10&lt;/li&gt;&lt;li&gt; ngx_devel_kit-0.2.17&lt;/li&gt;&lt;li&gt; ngx_lua-0.4.1&lt;/li&gt;&lt;li&gt; ngx_postgres-0.9rc2&lt;/li&gt;&lt;li&gt; rds-csv-nginx-module-0.04&lt;/li&gt;&lt;li&gt; rds-json-nginx-module-0.12rc7&lt;/li&gt;&lt;li&gt; redis2-nginx-module-0.08rc2&lt;/li&gt;&lt;li&gt; set-misc-nginx-module-0.22rc5&lt;/li&gt;&lt;li&gt; srcache-nginx-module-0.13rc3&lt;/li&gt;&lt;li&gt; upstream-keepalive-nginx-module-0.7&lt;/li&gt;&lt;li&gt; xss-nginx-module-0.03rc8&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.47 - 29 January 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.4.1rc4.&lt;ul&gt;&lt;li&gt; bugfix: &lt;code&gt;ngx_http_lua_header_filter_init&lt;/code&gt; was called with an argument which actually accepts none. this could cause compilation errors at least with gcc 4.3.4 as reported in github &lt;a target=&quot;_blank&quot; title=&quot;External link to http://github.com/chaoslawful/lua-nginx-module/issues/80&quot; href=&quot;http://github.com/chaoslawful/lua-nginx-module/issues/80&quot; class=&quot;externalLink&quot;&gt;issue #80&lt;/a&gt;. thanks bigplum (Simon).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.45 - 19 January 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.4.1rc3.&lt;ul&gt;&lt;li&gt; bugfix: fixed all the warnings from the &lt;code&gt;clang&lt;/code&gt; static analyzer.&lt;/li&gt;&lt;li&gt; bugfix: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.exit&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.exit&quot; class=&quot;externalLink&quot;&gt;ngx.exit&lt;/a&gt;, &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.redirect&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.redirect&quot; class=&quot;externalLink&quot;&gt;ngx.redirect&lt;/a&gt;, &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.exec&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.exec&quot; class=&quot;externalLink&quot;&gt;ngx.exec&lt;/a&gt;, and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.set_uri&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.set_uri&quot; class=&quot;externalLink&quot;&gt;ngx.req.set_uri(uri, true)&lt;/a&gt; could return (they should never return as per the documentation). this bug had appeared in ngx_lua v0.3.1rc4 and ngx_openresty 1.0.6.13. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/cyberty&quot; href=&quot;http://weibo.com/cyberty&quot; class=&quot;externalLink&quot;&gt;@cyberty&lt;/a&gt; for reporting it.&lt;/li&gt;&lt;li&gt; feature: allow use of the &lt;code&gt;DDEBUG&lt;/code&gt; macro from the outside (via the &lt;code&gt;-D DDEBUG=1&lt;/code&gt; cc opton).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;DrizzleNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DrizzleNginxModule&quot; href=&quot;null#DrizzleNginxModule&quot; class=&quot;externalLink null&quot;&gt;DrizzleNginxModule&lt;/a&gt; to v0.1.2rc6.&lt;ul&gt;&lt;li&gt; bugfix: fixed all the warnings from the &lt;code&gt;clang&lt;/code&gt; static analyzer.&lt;/li&gt;&lt;li&gt; feature: allow use of the &lt;code&gt;DDEBUG&lt;/code&gt; macro from the outside (via the &lt;code&gt;-D DDEBUG=1&lt;/code&gt; cc opton).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;EchoNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#EchoNginxModule&quot; href=&quot;null#EchoNginxModule&quot; class=&quot;externalLink null&quot;&gt;EchoNginxModule&lt;/a&gt; to 0.38rc1, &lt;a tiddlylink=&quot;SetMiscNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SetMiscNginxModule&quot; href=&quot;null#SetMiscNginxModule&quot; class=&quot;externalLink null&quot;&gt;SetMiscNginxModule&lt;/a&gt; to 0.22rc5, &lt;a tiddlylink=&quot;HeadersMoreNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#HeadersMoreNginxModule&quot; href=&quot;null#HeadersMoreNginxModule&quot; class=&quot;externalLink null&quot;&gt;HeadersMoreNginxModule&lt;/a&gt; to 0.17rc1, and &lt;a tiddlylink=&quot;MemcNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#MemcNginxModule&quot; href=&quot;null#MemcNginxModule&quot; class=&quot;externalLink null&quot;&gt;MemcNginxModule&lt;/a&gt; to 0.13rc3, to allow use of the &lt;code&gt;DDEBUG&lt;/code&gt; macro from the outside (via the &lt;code&gt;-D DDEBUG=1&lt;/code&gt; cc opton).&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Stable Release 1.0.10.44 - 16 January 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;EchoNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#EchoNginxModule&quot; href=&quot;null#EchoNginxModule&quot; class=&quot;externalLink null&quot;&gt;EchoNginxModule&lt;/a&gt; to 0.37.&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;HeadersMoreNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#HeadersMoreNginxModule&quot; href=&quot;null#HeadersMoreNginxModule&quot; class=&quot;externalLink null&quot;&gt;HeadersMoreNginxModule&lt;/a&gt; to 0.16.&lt;/li&gt;&lt;li&gt; bugfix: fixed compatibility of the packaging scripts on Darwin and *BSD. thanks nightsailer and Piotr Sikora.&lt;/li&gt;&lt;/ul&gt;Components bundled with this release:&lt;br&gt;&lt;ul&gt;&lt;li&gt; LuaJIT-2.0.0-beta9&lt;/li&gt;&lt;li&gt; array-var-nginx-module-0.03rc1&lt;/li&gt;&lt;li&gt; auth-request-nginx-module-0.2&lt;/li&gt;&lt;li&gt; drizzle-nginx-module-0.1.2rc4&lt;/li&gt;&lt;li&gt; echo-nginx-module-0.37&lt;/li&gt;&lt;li&gt; encrypted-session-nginx-module-0.02&lt;/li&gt;&lt;li&gt; form-input-nginx-module-0.07rc5&lt;/li&gt;&lt;li&gt; headers-more-nginx-module-0.16&lt;/li&gt;&lt;li&gt; iconv-nginx-module-0.10rc5&lt;/li&gt;&lt;li&gt; lua-5.1.4&lt;/li&gt;&lt;li&gt; lua-cjson-1.0.3&lt;/li&gt;&lt;li&gt; lua-rds-parser-0.04&lt;/li&gt;&lt;li&gt; lua-redis-parser-0.09rc5&lt;/li&gt;&lt;li&gt; memc-nginx-module-0.13rc2&lt;/li&gt;&lt;li&gt; nginx-1.0.10&lt;/li&gt;&lt;li&gt; ngx_devel_kit-0.2.17&lt;/li&gt;&lt;li&gt; ngx_lua-0.4.0&lt;/li&gt;&lt;li&gt; ngx_postgres-0.9rc2&lt;/li&gt;&lt;li&gt; rds-csv-nginx-module-0.04&lt;/li&gt;&lt;li&gt; rds-json-nginx-module-0.12rc7&lt;/li&gt;&lt;li&gt; redis2-nginx-module-0.08rc2&lt;/li&gt;&lt;li&gt; set-misc-nginx-module-0.22rc4&lt;/li&gt;&lt;li&gt; srcache-nginx-module-0.13rc3&lt;/li&gt;&lt;li&gt; upstream-keepalive-nginx-module-0.7&lt;/li&gt;&lt;li&gt; xss-nginx-module-0.03rc8&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.43 - 12 January 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.4.0.&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;EncryptedSessionNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#EncryptedSessionNginxModule&quot; href=&quot;null#EncryptedSessionNginxModule&quot; class=&quot;externalLink null&quot;&gt;EncryptedSessionNginxModule&lt;/a&gt; to 0.02.&lt;ul&gt;&lt;li&gt; bugfix: the &lt;code&gt;-lssl&lt;/code&gt; option broke nginx linking when &lt;code&gt;--with-openssl=DIR&lt;/code&gt; is specified. thanks charlieyang for reporting this issue.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; bugfix: fixed issues with relative path DIR in the &lt;code&gt;--with-openssl=DIR&lt;/code&gt; option for &lt;code&gt;./configure&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.41 - 9 January 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;UpstreamKeepaliveNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#UpstreamKeepaliveNginxModule&quot; href=&quot;null#UpstreamKeepaliveNginxModule&quot; class=&quot;externalLink null&quot;&gt;UpstreamKeepaliveNginxModule&lt;/a&gt; to 0.7.&lt;ul&gt;&lt;li&gt; Bugfix: unbuffered connection might not be kept alive under Linux.&lt;/li&gt;&lt;li&gt; Bugfix: module could not be built on Windows.&lt;/li&gt;&lt;li&gt; Bugfix: module could not be built without the ngx_http_ssl_module.&lt;/li&gt;&lt;li&gt; Feature: https connections support (requires patches).&lt;/li&gt;&lt;li&gt; Bugfix: invalid connections might be cached.&lt;/li&gt;&lt;li&gt; Bugfix: the &quot;[alert] ... open socket ... left in connection ...&quot; messages were logged on nginx worker process gracefull exit for each cached connection; the bug had appeared in version 0.3.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;EchoNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#EchoNginxModule&quot; href=&quot;null#EchoNginxModule&quot; class=&quot;externalLink null&quot;&gt;EchoNginxModule&lt;/a&gt; to 0.37rc8.&lt;ul&gt;&lt;li&gt; bugfix: fixed two spots that we did not check null pointers returned by the memory allocator.&lt;/li&gt;&lt;li&gt; bugfix: attempt to fix places where &lt;code&gt;ngx_time_update&lt;/code&gt; might not be compiled properly.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.39 - 4 January 2012&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to v0.3.1rc45.&lt;ul&gt;&lt;li&gt; bugfix: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.get_uri_args&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.get_uri_args&quot; class=&quot;externalLink&quot;&gt;ngx.req.get_uri_args&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.get_post_args&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.get_post_args&quot; class=&quot;externalLink&quot;&gt;ngx.req.get_post_args&lt;/a&gt; now only parse up to 100 arguments by default. but one can specify the optional argument to these two methods to specify a custom maximum number of args. thanks Tzury Bar Yochay for reporting this.&lt;/li&gt;&lt;li&gt; bugfix:  &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.get_headers&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.get_headers&quot; class=&quot;externalLink&quot;&gt;ngx.req.get_headers&lt;/a&gt; now only parse up to 100 request headers by default. but one can specify the optional argument to this method to specify a custom maximum number of headers.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.37 - 30 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to v0.3.1rc43.&lt;ul&gt;&lt;li&gt; bugfix: removing builtin headers via &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.clear_header&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.clear_header&quot; class=&quot;externalLink&quot;&gt;ngx.req.clear_header&lt;/a&gt; and its equivalent in huge request headers with 20+ entries could result in data loss. thanks Chris Dumoulin for the patch in &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/headers-more-nginx-module/issues/6&quot; href=&quot;https://github.com/agentzh/headers-more-nginx-module/issues/6&quot; class=&quot;externalLink&quot;&gt;github issue #6&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; bugfix: could not compile with Nginx 1.1.12+ because Nginx 1.1.12 changed its regex API. now we call PCRE API directly and require at least PCRE 8.21 for the PCRE JIT support in our &lt;code&gt;ngx.re&lt;/code&gt; API (since PCRE 8.20 had a bug in its JIT engine that it did not honor &lt;code&gt;pcre_malloc&lt;/code&gt; and &lt;code&gt;pcre_free&lt;/code&gt; at all).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.35 - 30 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;HeadersMoreNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#HeadersMoreNginxModule&quot; href=&quot;null#HeadersMoreNginxModule&quot; class=&quot;externalLink null&quot;&gt;HeadersMoreNginxModule&lt;/a&gt; to v0.16rc7.&lt;ul&gt;&lt;li&gt; bugfix: removing builtin headers in huge request headers with 20+ entries could result in data loss. thanks Chris Dumoulin for the patch in &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/headers-more-nginx-module/issues/6&quot; href=&quot;https://github.com/agentzh/headers-more-nginx-module/issues/6&quot; class=&quot;externalLink&quot;&gt;github issue #6&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; bugfix: the &lt;code&gt;install&lt;/code&gt; phony target did not depend on the &lt;code&gt;all&lt;/code&gt; phony target in the Makefile generated by &lt;code&gt;./configure&lt;/code&gt;. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/yaoweibin&quot; href=&quot;http://weibo.com/yaoweibin&quot; class=&quot;externalLink&quot;&gt;姚伟斌&lt;/a&gt; for reporting this issue.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.33 - 29 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; bugfix: the &lt;code&gt;./configure&lt;/code&gt; script's  &lt;code&gt;--add-module&lt;/code&gt; option did not accept relative path values. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/yaoweibin&quot; href=&quot;http://weibo.com/yaoweibin&quot; class=&quot;externalLink&quot;&gt;姚伟斌&lt;/a&gt; for the patch.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.31 - 25 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaJIT&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaJIT&quot; href=&quot;null#LuaJIT&quot; class=&quot;externalLink null&quot;&gt;LuaJIT&lt;/a&gt; to 2.0.0beta9.&lt;ul&gt;&lt;li&gt; changes: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://luajit.org/changes.html&quot; href=&quot;http://luajit.org/changes.html&quot; class=&quot;externalLink&quot;&gt;http://luajit.org/changes.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to v0.3.1rc42.&lt;ul&gt;&lt;li&gt; bugfix: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.set_header&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.set_header&quot; class=&quot;externalLink&quot;&gt;ngx.req.set_header&lt;/a&gt; might cause invalid memory reads because Nginx request header values must be null terminated. thanks Maxim Dounin.&lt;/li&gt;&lt;li&gt; bugfix: &lt;code&gt;ngx.var.VARIABLE&lt;/code&gt; might evaluate to nil even if there is a valid value because the Nginx variable value's &lt;code&gt;valid&lt;/code&gt; flag might not be initialized properly. this bad had appeared in v0.3.1rc40.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;HeadersMoreNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#HeadersMoreNginxModule&quot; href=&quot;null#HeadersMoreNginxModule&quot; class=&quot;externalLink null&quot;&gt;HeadersMoreNginxModule&lt;/a&gt; to v0.16rc6.&lt;ul&gt;&lt;li&gt; bugfix: the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpHeadersMoreModule#more_set_headers&quot; href=&quot;http://wiki.nginx.org/HttpHeadersMoreModule#more_set_headers&quot; class=&quot;externalLink&quot;&gt;more_set_input_headers&lt;/a&gt; directive might cause invalid memory reads because Nginx request header values must be null terminated. thanks Maxim Dounin.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.29 - 17 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to v0.3.1rc41.&lt;ul&gt;&lt;li&gt; bugfix: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.set_header&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.set_header&quot; class=&quot;externalLink&quot;&gt;ngx.req.set_header&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.clear_header&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.clear_header&quot; class=&quot;externalLink&quot;&gt;ngx.req.clear_header&lt;/a&gt; did not handle the &lt;code&gt;Accept-Encoding&lt;/code&gt; request headers properly. thanks 天街夜色.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;HeadersMoreNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#HeadersMoreNginxModule&quot; href=&quot;null#HeadersMoreNginxModule&quot; class=&quot;externalLink null&quot;&gt;HeadersMoreNginxModule&lt;/a&gt; to 0.16rc5.&lt;ul&gt;&lt;li&gt; bugfix: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpHeadersMoreModule#more_set_input_headers&quot; href=&quot;http://wiki.nginx.org/HttpHeadersMoreModule#more_set_input_headers&quot; class=&quot;externalLink&quot;&gt;more_set_input_headers&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpHeadersMoreModule#more_clear_input_headers&quot; href=&quot;http://wiki.nginx.org/HttpHeadersMoreModule#more_clear_input_headers&quot; class=&quot;externalLink&quot;&gt;more_clear_input_headers&lt;/a&gt; did not handle the &lt;code&gt;Accept-Encoding&lt;/code&gt; request headers properly. thanks 天街夜色.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.27 - 16 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to v0.3.1rc40.&lt;ul&gt;&lt;li&gt; bugfix: &lt;code&gt;ngx.flush(true)&lt;/code&gt; could not be used before I/O calls like &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; class=&quot;externalLink&quot;&gt;ngx.location.capture&lt;/a&gt;. this bug had appeared in v0.3.1rc34.&lt;/li&gt;&lt;li&gt; bugfix: &lt;code&gt;ngx.var.VARIABLE&lt;/code&gt; did not evaluate to &lt;code&gt;nil&lt;/code&gt; when the Nginx variable's &lt;code&gt;valid&lt;/code&gt; flag is &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; docs: various documentation improvements. thanks Nginx User.&lt;/li&gt;&lt;li&gt; bugfix: there were various places where we did not check the pointer returned by the memory allocator.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;SetMiscNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SetMiscNginxModule&quot; href=&quot;null#SetMiscNginxModule&quot; class=&quot;externalLink null&quot;&gt;SetMiscNginxModule&lt;/a&gt; to v0.22rc4.&lt;ul&gt;&lt;li&gt; bugfix: fixed one place that does not check the pointer returned by the memory allocator.&lt;/li&gt;&lt;li&gt; src: converted &lt;code&gt;CRLF&lt;/code&gt; in the source files and test files to &lt;code&gt;LF&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; bugfix: some old version of shell &lt;code&gt;cp&lt;/code&gt; command does not support trailing slashes in the destination argument and could break our &lt;code&gt;./configure&lt;/code&gt; script. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/yaoweibin&quot; href=&quot;http://weibo.com/yaoweibin&quot; class=&quot;externalLink&quot;&gt;姚伟斌&lt;/a&gt; for reporting it.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.25 - 14 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;SrcacheNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SrcacheNginxModule&quot; href=&quot;null#SrcacheNginxModule&quot; class=&quot;externalLink null&quot;&gt;SrcacheNginxModule&lt;/a&gt; to v0.13rc3.&lt;ul&gt;&lt;li&gt; bugfix: fixed a regression with &lt;a tiddlylink=&quot;XssNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#XssNginxModule&quot; href=&quot;null#XssNginxModule&quot; class=&quot;externalLink null&quot;&gt;XssNginxModule&lt;/a&gt; for cache hits. this bug had appeared in v0.13rc1. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/liseen&quot; href=&quot;http://weibo.com/liseen&quot; class=&quot;externalLink&quot;&gt;万珣新&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; bugfix: we did not cache the &lt;code&gt;Location&lt;/code&gt; response header at all for &lt;code&gt;301&lt;/code&gt;/&lt;code&gt;302&lt;/code&gt; responses.&lt;/li&gt;&lt;li&gt; bugfix: we should not blindly cache the &lt;code&gt;Accept-Ranges: bytes&lt;/code&gt; response headers regardless of the actual current requests.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;XssNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#XssNginxModule&quot; href=&quot;null#XssNginxModule&quot; class=&quot;externalLink null&quot;&gt;XssNginxModule&lt;/a&gt; to v0.03rc8.&lt;ul&gt;&lt;li&gt; bugfix: fixed a few debug-level log messages; the old text was misleading.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Stable Release 1.0.10.24 - 11 December 2011&lt;/h1&gt;Same as the devel version 1.0.10.23.&lt;br&gt;&lt;br&gt;Components bundled with this release:&lt;br&gt;&lt;ul&gt;&lt;li&gt; LuaJIT-2.0.0-beta8&lt;/li&gt;&lt;li&gt; array-var-nginx-module-0.03rc1&lt;/li&gt;&lt;li&gt; auth-request-nginx-module-0.2&lt;/li&gt;&lt;li&gt; drizzle-nginx-module-0.1.2rc4&lt;/li&gt;&lt;li&gt; echo-nginx-module-0.37rc7&lt;/li&gt;&lt;li&gt; encrypted-session-nginx-module-0.01&lt;/li&gt;&lt;li&gt; form-input-nginx-module-0.07rc5&lt;/li&gt;&lt;li&gt; headers-more-nginx-module-0.16rc4&lt;/li&gt;&lt;li&gt; iconv-nginx-module-0.10rc5&lt;/li&gt;&lt;li&gt; lua-5.1.4&lt;/li&gt;&lt;li&gt; lua-cjson-1.0.3&lt;/li&gt;&lt;li&gt; lua-rds-parser-0.04&lt;/li&gt;&lt;li&gt; lua-redis-parser-0.09rc5&lt;/li&gt;&lt;li&gt; memc-nginx-module-0.13rc2&lt;/li&gt;&lt;li&gt; nginx-1.0.10&lt;/li&gt;&lt;li&gt; ngx_devel_kit-0.2.17&lt;/li&gt;&lt;li&gt; ngx_lua-0.3.1rc38&lt;/li&gt;&lt;li&gt; ngx_postgres-0.9rc2&lt;/li&gt;&lt;li&gt; rds-csv-nginx-module-0.04&lt;/li&gt;&lt;li&gt; rds-json-nginx-module-0.12rc7&lt;/li&gt;&lt;li&gt; redis2-nginx-module-0.08rc2&lt;/li&gt;&lt;li&gt; set-misc-nginx-module-0.22rc3&lt;/li&gt;&lt;li&gt; srcache-nginx-module-0.13rc2&lt;/li&gt;&lt;li&gt; upstream-keepalive-nginx-module-0.3&lt;/li&gt;&lt;li&gt; xss-nginx-module-0.03rc7&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.23 - 5 December 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;RdsJsonNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#RdsJsonNginxModule&quot; href=&quot;null#RdsJsonNginxModule&quot; class=&quot;externalLink null&quot;&gt;RdsJsonNginxModule&lt;/a&gt; to v0.12rc7.&lt;ul&gt;&lt;li&gt; added more debug level error log outputs to ease debugging (as discussed in &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/rds-json-nginx-module/issues/2&quot; href=&quot;https://github.com/agentzh/rds-json-nginx-module/issues/2&quot; class=&quot;externalLink&quot;&gt;github issue #2&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;XssNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#XssNginxModule&quot; href=&quot;null#XssNginxModule&quot; class=&quot;externalLink null&quot;&gt;XssNginxModule&lt;/a&gt; to v0.03rc7.&lt;ul&gt;&lt;li&gt; now we use the &lt;code&gt;ngx_log_debugN&lt;/code&gt; macros to emit debugging outputs instead of &lt;code&gt;info&lt;/code&gt; level error logging because the latter is costly in production.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc38.&lt;ul&gt;&lt;li&gt; added constant &lt;code&gt;ngx.HTTP_GATEWAY_TIMEOUT&lt;/code&gt; (504) per Fry-kun in &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/chaoslawful/lua-nginx-module/issues/73&quot; href=&quot;https://github.com/chaoslawful/lua-nginx-module/issues/73&quot; class=&quot;externalLink&quot;&gt;github issue #73&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.21 - 30 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; fixed a serious regression for Linux AIO in &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.10-epoll_check_stale_wev.patch&quot; href=&quot;https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.10-epoll_check_stale_wev.patch&quot; class=&quot;externalLink&quot;&gt;nginx-1.0.10-epoll_check_stale_wev.patch&lt;/a&gt;, thanks Maxim Dounin for the patch's patch.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.19 - 29 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc37.&lt;ul&gt;&lt;li&gt; bugfix: use of the ngx.re API might lead to errors like &lt;code&gt;pcre_compile() failed: failed to get memory in ...&lt;/code&gt; due to incorrect &lt;code&gt;pcre_malloc&lt;/code&gt; and &lt;code&gt;pcre_free&lt;/code&gt; handling. thanks Vittly for reporting this as &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/chaoslawful/lua-nginx-module/issues/72&quot; href=&quot;https://github.com/chaoslawful/lua-nginx-module/issues/72&quot; class=&quot;externalLink&quot;&gt;github issue #72&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; docs: massive documentation improvements. thanks Nginx User.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.17 - 26 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc36.&lt;ul&gt;&lt;li&gt; bugfix: fixed the &lt;code&gt;ngx_log_debugN&lt;/code&gt; macros which failed to compile without &lt;code&gt;--with-debug&lt;/code&gt;. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/ldmiao&quot; href=&quot;http://weibo.com/ldmiao&quot; class=&quot;externalLink&quot;&gt;@ldmiao&lt;/a&gt; for reporting it.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.15 - 26 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc35.&lt;ul&gt;&lt;li&gt; bugfix: now we check timed out downstream connections in our write event handler.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.13 - 25 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc34.&lt;ul&gt;&lt;li&gt; feature: added &lt;code&gt;wait&lt;/code&gt; boolean argument to &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.flush&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.flush&quot; class=&quot;externalLink&quot;&gt;ngx.flush()&lt;/a&gt; to support synchronous flushing; &lt;code&gt;ngx.flush(true)&lt;/code&gt; will not return until all the data has been flushed into the system send buffer or the send timeout has expired.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.11 - 24 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc33.&lt;ul&gt;&lt;li&gt; feature: added new Lua API &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.now&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.now&quot; class=&quot;externalLink&quot;&gt;ngx.now&lt;/a&gt; to return the current time (including the ms part as the decimal part). thanks 林青.&lt;/li&gt;&lt;li&gt; feature: added new Lua API &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.update_time&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.update_time&quot; class=&quot;externalLink&quot;&gt;ngx.update_time&lt;/a&gt; to forcibly updating nginx's time cache.&lt;/li&gt;&lt;li&gt; docs: massive documentation improvement done by Nginx User.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.9 - 24 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;XssNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#XssNginxModule&quot; href=&quot;null#XssNginxModule&quot; class=&quot;externalLink null&quot;&gt;XssNginxModule&lt;/a&gt; to 0.03rc6.&lt;ul&gt;&lt;li&gt; bugfix: now we use &lt;code&gt;signed char&lt;/code&gt; explicitly instead of the vague &lt;code&gt;char&lt;/code&gt; type which could be unsigned by default in certain systems like PowerPC. thanks Dmitry E. Oboukhov.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;MemcNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#MemcNginxModule&quot; href=&quot;null#MemcNginxModule&quot; class=&quot;externalLink null&quot;&gt;MemcNginxModule&lt;/a&gt; to 0.13rc2.&lt;ul&gt;&lt;li&gt; bugfix: now we use &lt;code&gt;signed char&lt;/code&gt; explicitly instead of the vague &lt;code&gt;char&lt;/code&gt; type which could be unsigned by default in certain systems like PowerPC. thanks Dmitry E. Oboukhov.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;Redis2NginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Redis2NginxModule&quot; href=&quot;null#Redis2NginxModule&quot; class=&quot;externalLink null&quot;&gt;Redis2NginxModule&lt;/a&gt; to 0.08rc2.&lt;ul&gt;&lt;li&gt; bugfix: when &lt;code&gt;char&lt;/code&gt; defaults to &lt;code&gt;unsigned char&lt;/code&gt;, the Ragel-based Redis response parser could not accept non-ascci bytes. thanks Dmitry E. Oboukhov.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.7 - 23 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc31.&lt;ul&gt;&lt;li&gt; feature: added opions &lt;code&gt;copy_all_vars&lt;/code&gt; and &lt;code&gt;vars&lt;/code&gt; to &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; class=&quot;externalLink&quot;&gt;ngx.location.capture&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.location.capture_multi&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.location.capture_multi&quot; class=&quot;externalLink&quot;&gt;ngx.location.capture_multi&lt;/a&gt;. thanks Marcus Clyne for the patch.&lt;/li&gt;&lt;li&gt; bugfix: fixed a bad regression in &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.location.capture_multi&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.location.capture_multi&quot; class=&quot;externalLink&quot;&gt;ngx.location.capture_multi&lt;/a&gt; when the request option table is specified. this bug had appeared in ngx_lua 0.3.1rc26 and ngx_openresty 1.0.9.1.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.5 - 21 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc30.&lt;ul&gt;&lt;li&gt; feature: added new regex options &lt;code&gt;&quot;j&quot;&lt;/code&gt; and &lt;code&gt;&quot;d&quot;&lt;/code&gt; to &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.re.match&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.re.match&quot; class=&quot;externalLink&quot;&gt;ngx.re.match&lt;/a&gt;, &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.re.gmatch&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.re.gmatch&quot; class=&quot;externalLink&quot;&gt;ngx.re.gmatch&lt;/a&gt;, &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.re.sub&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.re.sub&quot; class=&quot;externalLink&quot;&gt;ngx.re.sub&lt;/a&gt;, and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.re.gsub&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.re.gsub&quot; class=&quot;externalLink&quot;&gt;ngx.re.gsub&lt;/a&gt;  so as to enable the PCRE &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.manpagez.com/man/3/pcrejit/&quot; href=&quot;http://www.manpagez.com/man/3/pcrejit/&quot; class=&quot;externalLink&quot;&gt;JIT mode&lt;/a&gt; and DFA mode, respectively. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/egis&quot; href=&quot;http://weibo.com/egis&quot; class=&quot;externalLink&quot;&gt;@姜大炮&lt;/a&gt; for providing the patch.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.3 - 17 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc29.&lt;ul&gt;&lt;li&gt; feature: added &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.hmac_sha1&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.hmac_sha1&quot; class=&quot;externalLink&quot;&gt;ngx.hmac_sha1&lt;/a&gt;. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/drdrxp&quot; href=&quot;http://weibo.com/drdrxp&quot; class=&quot;externalLink&quot;&gt;drdrxp&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; docs: documented the long-existent &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.md5&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.md5&quot; class=&quot;externalLink&quot;&gt;ngx.md5&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.md5_bin&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.md5_bin&quot; class=&quot;externalLink&quot;&gt;ngx.md5_bin&lt;/a&gt; APIs.&lt;/li&gt;&lt;li&gt; docs: massive documentation improvements. thanks Nginx User.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.10.1 - 16 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded the Nginx core to 1.0.10.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;See &lt;a tiddlylink=&quot;ChangeLog1000009&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000009&quot; href=&quot;null#ChangeLog1000009&quot; class=&quot;externalLink null&quot;&gt;ChangeLog1000009&lt;/a&gt; for change log for ngx_openresty 1.0.9.x.&lt;br&gt;</description>
<link>null#ChangeLog1000010</link>
<pubDate>Thu, 02 Feb 2012 04:52:00 GMT</pubDate>

</item>
<item>
<title>eBooks</title>
<description>&lt;h1&gt; Chinese eBooks for Nginx &amp;amp; &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;&lt;/h1&gt;&lt;a tiddler=&quot;eBooks&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt; &quot;agentzh's Nginx tutorials&quot; (version 2012.01.16)&lt;ul&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/agentzh-nginx-tutorials-zhcn-2012.01.16.mobi&quot; href=&quot;http://agentzh.org/misc/nginx/agentzh-nginx-tutorials-zhcn-2012.01.16.mobi&quot; class=&quot;externalLink&quot;&gt;MOBI Format&lt;/a&gt; (Kindle users)&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/agentzh-nginx-tutorials-zhcn-2012.01.16.epub&quot; href=&quot;http://agentzh.org/misc/nginx/agentzh-nginx-tutorials-zhcn-2012.01.16.epub&quot; class=&quot;externalLink&quot;&gt;EPUB Format&lt;/a&gt; (Sony, Apple and other users)&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/agentzh-nginx-tutorials-zhcn-2012.01.16.pdf&quot; href=&quot;http://agentzh.org/misc/nginx/agentzh-nginx-tutorials-zhcn-2012.01.16.pdf&quot; class=&quot;externalLink&quot;&gt;PDF Format&lt;/a&gt; (PC users)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</description>
<link>null#eBooks</link>
<pubDate>Mon, 16 Jan 2012 13:52:00 GMT</pubDate>

</item>
<item>
<title>DonateOnline</title>
<description>&lt;a tiddler=&quot;DonateOnline&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Donate With PayPal&lt;/h1&gt;&lt;br&gt;If you'd like to make a one-time donation to &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;, you can use PayPal to make it fast and easy.&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt; PayPal members can donate directly from their PayPal accounts by logging in via the PayPal website and clicking &quot;send money&quot; to &lt;code&gt;agentzh@gmail.com&lt;/code&gt;, or just click the button below.&lt;/li&gt;&lt;li&gt; Non-PayPal members can still pay with a credit card without signing up for PayPal. Click the button below then follow the instructions at the bottom of the page for non-PayPal members.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Either way, it's a convenient way to support ocean wildlife.&lt;br&gt;&lt;br&gt;&lt;span&gt;
&lt;form name=&quot;_xclick&quot; action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot; target=&quot;_blank&quot;&gt;
&lt;input name=&quot;cmd&quot; value=&quot;_xclick&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;business&quot; value=&quot;agentzh@gmail.com&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;item_name&quot; value=&quot;OpenResty Donation (in USD)&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;currency_code&quot; value=&quot;USD&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;amount&quot; value=&quot;&quot; type=&quot;hidden&quot;&gt;
&lt;input src=&quot;donate_button_paypal_01.gif&quot; name=&quot;submit&quot; alt=&quot;Donate with PayPal&quot; border=&quot;0&quot; type=&quot;image&quot;&gt;
&lt;/form&gt;
&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Donate with AliPay (支付宝)&lt;/h1&gt;&lt;br&gt;If you're in China, it's usually more convenient to send donation is to send money via the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.alipay.com/&quot; href=&quot;http://www.alipay.com/&quot; class=&quot;externalLink&quot;&gt;AliPay&lt;/a&gt; to my account &lt;code&gt;agentzh@yahoo.cn&lt;/code&gt; or just click the following button:&lt;br&gt;&lt;br&gt;&lt;span&gt;
&lt;a href=&quot;http://me.alipay.com/agentzh&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;donate-with-alipay.png&quot;&gt;&lt;/a&gt;
&lt;/span&gt;&lt;br&gt;&lt;br&gt;Any amount will be highly appreciated!&lt;br&gt;</description>
<link>null#DonateOnline</link>
<pubDate>Thu, 12 Jan 2012 10:22:00 GMT</pubDate>

</item>
<item>
<title>MainMenu</title>
<description>&lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;Overview&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Components&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Components&quot; href=&quot;null#Components&quot; class=&quot;externalLink null&quot;&gt;Components&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;GettingStarted&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#GettingStarted&quot; href=&quot;null#GettingStarted&quot; class=&quot;externalLink null&quot;&gt;Getting started&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Samples&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Samples&quot; href=&quot;null#Samples&quot; class=&quot;externalLink null&quot;&gt;Samples&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Benchmark&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Benchmark&quot; href=&quot;null#Benchmark&quot; class=&quot;externalLink null&quot;&gt;Benchmark&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Presentations&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Presentations&quot; href=&quot;null#Presentations&quot; class=&quot;externalLink null&quot;&gt;Presentations&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;eBooks&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#eBooks&quot; href=&quot;null#eBooks&quot; class=&quot;externalLink null&quot;&gt;eBooks&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Resources&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Resources&quot; href=&quot;null#Resources&quot; class=&quot;externalLink null&quot;&gt;Resources&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Download&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Download&quot; href=&quot;null#Download&quot; class=&quot;externalLink null&quot;&gt;Download&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Installation&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Installation&quot; href=&quot;null#Installation&quot; class=&quot;externalLink null&quot;&gt;Installation&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;ContactUs&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ContactUs&quot; href=&quot;null#ContactUs&quot; class=&quot;externalLink null&quot;&gt;Contact us&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;About&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#About&quot; href=&quot;null#About&quot; class=&quot;externalLink null&quot;&gt;About&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;DonateOnline&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DonateOnline&quot; href=&quot;null#DonateOnline&quot; class=&quot;externalLink null&quot;&gt;Donate Online&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&quot;feed-icon-14x14.png&quot;&gt; &lt;a tiddlylink=&quot;RSSFeed&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#RSSFeed&quot; href=&quot;null#RSSFeed&quot; class=&quot;externalLink null&quot;&gt;RSS feed&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;span&gt;
&lt;form name=&quot;_xclick&quot; action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot; target=&quot;_blank&quot;&gt;
&lt;input name=&quot;cmd&quot; value=&quot;_xclick&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;business&quot; value=&quot;agentzh@gmail.com&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;item_name&quot; value=&quot;OpenResty Donation (in USD)&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;currency_code&quot; value=&quot;USD&quot; type=&quot;hidden&quot;&gt;
&lt;input name=&quot;amount&quot; value=&quot;&quot; type=&quot;hidden&quot;&gt;
&lt;input src=&quot;donate_button_paypal_01.gif&quot; name=&quot;submit&quot; alt=&quot;Donate with PayPal&quot; border=&quot;0&quot; type=&quot;image&quot;&gt;
&lt;/form&gt;
&lt;/span&gt;&lt;br&gt;&lt;span&gt;
&lt;a href=&quot;http://me.alipay.com/agentzh&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;donate-with-alipay.png&quot;&gt;&lt;/a&gt;
&lt;/span&gt;</description>
<category>admin</category>
<link>null#MainMenu</link>
<pubDate>Thu, 12 Jan 2012 10:21:00 GMT</pubDate>

</item>
<item>
<title>MarkupPostBody</title>
<description>&amp;lt;p/&amp;gt;&amp;lt;p/&amp;gt;&lt;br&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br&gt;&lt;br&gt;  var _gaq = _gaq || [];&lt;br&gt;  _gaq.push(['_setAccount', '&lt;a tiddlylink=&quot;UA-24724965-1&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#UA-24724965-1&quot; href=&quot;null#UA-24724965-1&quot; class=&quot;externalLink null&quot;&gt;UA-24724965-1&lt;/a&gt;']);&lt;br&gt;  _gaq.push(['_trackPageview']);&lt;br&gt;&lt;br&gt;  var ga_f = function() {&lt;br&gt;    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&lt;br&gt;    ga.src = ('https:' == document.location.protocol ? '&lt;a target=&quot;_blank&quot; title=&quot;External link to https://ssl&quot; href=&quot;https://ssl&quot; class=&quot;externalLink&quot;&gt;https://ssl&lt;/a&gt;' : '&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www&quot; href=&quot;http://www&quot; class=&quot;externalLink&quot;&gt;http://www&lt;/a&gt;') + '.google-analytics.com/ga.js';&lt;br&gt;    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&lt;br&gt;  };&lt;br&gt;  setTimeout(ga_f, 200);&lt;br&gt;&lt;br&gt;&amp;lt;/script&amp;gt;&lt;br&gt;</description>
<link>null#MarkupPostBody</link>
<pubDate>Thu, 12 Jan 2012 09:14:00 GMT</pubDate>

</item>
<item>
<title>Presentations</title>
<description>&lt;a tiddler=&quot;Presentations&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;Here goes a list of slides that I used in my talks regarding &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;.&lt;br&gt;&lt;br&gt;These slides are powered by the &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/kindy61/slides.htm&quot; href=&quot;https://github.com/kindy61/slides.htm&quot; class=&quot;externalLink&quot;&gt;slides.htm&lt;/a&gt; slide-making engine based on AJAX.&lt;br&gt;&lt;br&gt;&lt;strong&gt;&lt;em&gt;Note: Please use the arrow keys or pageup/pagedown keys on your keyboard to switch pages.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;&lt;h1&gt; Year 2011&lt;/h1&gt;&lt;h2&gt; Applications of ngx_openresty and perl in lz.taobao.com&lt;/h2&gt;&lt;br&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org/bjpw2011/talks&quot; href=&quot;http://conference.perlchina.org/bjpw2011/talks&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop 2011&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Watch the video online: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://v.ku6.com/show/TY8Vre59guTE_C8o.html&quot; href=&quot;http://v.ku6.com/show/TY8Vre59guTE_C8o.html&quot; class=&quot;externalLink&quot;&gt;http://v.ku6.com/show/TY8Vre59guTE_C8o.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;View in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/perl-lz-apps/&quot; href=&quot;http://agentzh.org/misc/slides/perl-lz-apps/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/perl-lz-apps/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/perl-lz-apps.tar.gz&quot; href=&quot;http://agentzh.org/misc/slides/perl-lz-apps.tar.gz&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/perl-lz-apps.tar.gz&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2010&lt;/h1&gt;&lt;h2&gt; Introduction to nginx.conf scripting&lt;/h2&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org&quot; href=&quot;http://conference.perlchina.org&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop&lt;/a&gt; 2010 April meeting and the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.beijing-open-party.org/event/2&quot; href=&quot;http://www.beijing-open-party.org/event/2&quot; class=&quot;externalLink&quot;&gt;Beijing OpenParty 2010 June event&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-conf-scripting/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-conf-scripting/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-conf-scripting/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-conf-scripting.tar.gz&quot; href=&quot;http://agentzh.org/misc/slides/nginx-conf-scripting.tar.gz&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-conf-scripting.tar.gz&lt;/a&gt;&lt;br&gt;&lt;br&gt;Please note that ngx_eval module is no longer recommended because we're in more favor of ngx_lua nowadays.&lt;br&gt;&lt;br&gt;&lt;h2&gt; Recent developments in nginx.conf scripting&lt;/h2&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.beijing-open-party.org/event/2&quot; href=&quot;http://www.beijing-open-party.org/event/2&quot; class=&quot;externalLink&quot;&gt;Beijing OpenParty 2010 June event&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/recent-dev-nginx-conf/&quot; href=&quot;http://agentzh.org/misc/slides/recent-dev-nginx-conf/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/recent-dev-nginx-conf/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/recent-dev-nginx-conf.tar.gz&quot; href=&quot;http://agentzh.org/misc/slides/recent-dev-nginx-conf.tar.gz&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/recent-dev-nginx-conf.tar.gz&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; The state of the art of nginx.conf scripting&lt;/h2&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; class=&quot;externalLink&quot;&gt;ECUG 2010 event&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Watch the (Chinese-speech) video online: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://v.ku6.com/show/D00rqtnRwKzJdIsB.html&quot; href=&quot;http://v.ku6.com/show/D00rqtnRwKzJdIsB.html&quot; class=&quot;externalLink&quot;&gt;http://v.ku6.com/show/D00rqtnRwKzJdIsB.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;View the (English) slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-state-of-the-art/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-state-of-the-art.tar.gz&quot; href=&quot;http://agentzh.org/misc/slides/nginx-state-of-the-art.tar.gz&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-state-of-the-art.tar.gz&lt;/a&gt;&lt;br&gt;</description>
<link>null#Presentations</link>
<pubDate>Tue, 29 Nov 2011 12:57:00 GMT</pubDate>

</item>
<item>
<title>DrizzleNginxModule</title>
<description>&lt;a tiddler=&quot;DrizzleNginxModule&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;This is an nginx upstream module that talks to MySQL and/or Drizzle database servers by &lt;a tiddlylink=&quot;libdrizzle&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#libdrizzle&quot; href=&quot;null#libdrizzle&quot; class=&quot;externalLink null&quot;&gt;libdrizzle&lt;/a&gt;.&lt;br&gt;&lt;br&gt;This ngx_drizzle module is not enabled by default. You should specify the &lt;code&gt;--with-http_drizzle_module&lt;/code&gt; optiotn while configuring &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;.&lt;br&gt;&lt;br&gt;The &lt;a tiddlylink=&quot;libdrizzle&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#libdrizzle&quot; href=&quot;null#libdrizzle&quot; class=&quot;externalLink null&quot;&gt;libdrizzle&lt;/a&gt; C library is no longer bundled by &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;. You need to download the drizzle server tarball from &lt;a target=&quot;_blank&quot; title=&quot;External link to https://launchpad.net/drizzle&quot; href=&quot;https://launchpad.net/drizzle&quot; class=&quot;externalLink&quot;&gt;https://launchpad.net/drizzle&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Latest drizzle7 release does not support building libdrizzle 1.0 separately and requires a lot of external dependencies like Boost and Protobuf which are painful to install. The last version supporting building libdrizzle 1.0 separately is &lt;code&gt;2011.07.21&lt;/code&gt;. You can download it from here:&lt;br&gt;&lt;br&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/nginx/drizzle7-2011.07.21.tar.gz&quot; href=&quot;http://agentzh.org/misc/nginx/drizzle7-2011.07.21.tar.gz&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/nginx/drizzle7-2011.07.21.tar.gz&lt;/a&gt;&lt;br&gt;&lt;br&gt;When you get the drizzle7 2011.07.21 release tarball, you can install libdrizzle-1.0 like this:&lt;br&gt;&lt;pre&gt;tar xzvf drizzle7-2011.07.21.tar.gz
cd drizzle7-2011.07.21/
./configure --without-server
make libdrizzle-1.0
make install-libdrizzle-1.0
&lt;/pre&gt;&lt;br&gt;Please ensure that you have the &lt;code&gt;python&lt;/code&gt; command point to a &lt;code&gt;python2&lt;/code&gt; interpreter. It's known that on recent Arch Linux distribution, &lt;code&gt;python&lt;/code&gt; is linked to &lt;code&gt;python3&lt;/code&gt; by default, and while running &lt;code&gt;make libdrizzle-1.0&lt;/code&gt; will yield the following error:&lt;br&gt;&lt;pre&gt;  File &quot;config/pandora-plugin&quot;, line 185
    print &quot;Dependency loop detected with %s&quot; % plugin['name']
                                           ^
SyntaxError: invalid syntax
make: *** [.plugin.scan] Error 1
&lt;/pre&gt;You can fix this by pointing &lt;code&gt;python&lt;/code&gt; temporarily to &lt;code&gt;python2&lt;/code&gt;.&lt;br&gt;&lt;br&gt;When you install the libdrizzle-1.0 library to a custom path prefix, you can specify the libdrizzle prefix to &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; like this:&lt;br&gt;&lt;pre&gt;cd /path/to/ngx_openresty-VERSION/
./configure --with-libdrizzle=/path/to/drizzle --with-http_drizzle_module
&lt;/pre&gt;&lt;br&gt;Documentation page: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpDrizzleModule&quot; href=&quot;http://wiki.nginx.org/HttpDrizzleModule&quot; class=&quot;externalLink&quot;&gt;http://wiki.nginx.org/HttpDrizzleModule&lt;/a&gt;&lt;br&gt;&lt;br&gt;Project page: &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/chaoslawful/drizzle-nginx-module&quot; href=&quot;https://github.com/chaoslawful/drizzle-nginx-module&quot; class=&quot;externalLink&quot;&gt;https://github.com/chaoslawful/drizzle-nginx-module&lt;/a&gt;</description>
<link>null#DrizzleNginxModule</link>
<pubDate>Mon, 28 Nov 2011 06:39:00 GMT</pubDate>

</item>
<item>
<title>About</title>
<description>&lt;a tiddler=&quot;About&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;This bundle is maintained by us, &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org&quot; href=&quot;http://agentzh.org&quot; class=&quot;externalLink&quot;&gt;agentzh&lt;/a&gt;, &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/chaoslawful&quot; href=&quot;https://github.com/chaoslawful&quot; class=&quot;externalLink&quot;&gt;chaoslawful&lt;/a&gt;, &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/kindy61&quot; href=&quot;https://github.com/kindy61&quot; class=&quot;externalLink&quot;&gt;Kindy Lin&lt;/a&gt;, &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/liseen&quot; href=&quot;https://github.com/liseen&quot; class=&quot;externalLink&quot;&gt;Liseen Wan&lt;/a&gt;, and Jiale Zhi. It was originally sponsored by &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.taobao.com&quot; href=&quot;http://www.taobao.com&quot; class=&quot;externalLink&quot;&gt;Taobao.com&lt;/a&gt;, Alibaba Group.&lt;br&gt;&lt;br&gt;Because most of the nginx modules are developed by the bundle maintainers, it can ensure&lt;br&gt;that all these modules are played well together.&lt;br&gt;&lt;br&gt;The bundled software components are copyrighted by the respective copyright holders.&lt;br&gt;&lt;br&gt;This web site is a &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.tiddlywiki.com/&quot; href=&quot;http://www.tiddlywiki.com/&quot; class=&quot;externalLink&quot;&gt;TiddlyWiki&lt;/a&gt; page that is under the version control of a repository on &lt;a tiddlylink=&quot;GitHub&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#GitHub&quot; href=&quot;null#GitHub&quot; class=&quot;externalLink null&quot;&gt;GitHub&lt;/a&gt;:&lt;br&gt;&lt;br&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://github.com/agentzh/openresty.org&quot; href=&quot;http://github.com/agentzh/openresty.org&quot; class=&quot;externalLink&quot;&gt;http://github.com/agentzh/openresty.org&lt;/a&gt;&lt;br&gt;&lt;br&gt;Feel free to fork it or just &lt;a tiddlylink=&quot;ContactUs&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ContactUs&quot; href=&quot;null#ContactUs&quot; class=&quot;externalLink null&quot;&gt;contact us&lt;/a&gt; to obtain a git commit bit if you want to edit and improve this site.&lt;br&gt;</description>
<link>null#About</link>
<pubDate>Thu, 17 Nov 2011 04:03:00 GMT</pubDate>

</item>
<item>
<title>Benchmark</title>
<description>&lt;a tiddler=&quot;Benchmark&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt;HelloWorld&lt;/h1&gt;Testing the performance of a HelloWorld server does not mean many things but it does tell us where the ceiling is.&lt;br&gt;&lt;br&gt;The HelloWorld server based on &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; is described in the &lt;a tiddlylink=&quot;GettingStarted&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#GettingStarted&quot; href=&quot;null#GettingStarted&quot; class=&quot;externalLink null&quot;&gt;GettingStarted&lt;/a&gt; document.&lt;br&gt;&lt;br&gt;Below is the result using the command &lt;code&gt;http_load -p 10 -s 5 http://localhost:8080/&lt;/code&gt; on my ThinkPad T400 laptop with ngx_openresty 1.0.10.1:&lt;br&gt;&lt;pre&gt;139620 fetches, 10 max parallel, 1.67544e+06 bytes, in 5.00001 seconds
12 mean bytes/connection
27923.9 fetches/sec, 335087 bytes/sec
msecs/connect: 0.0531258 mean, 4.076 max, 0.014 min
msecs/first-response: 0.258796 mean, 5.353 max, 0.067 min
HTTP response codes:
  code 200 -- 139620
&lt;/pre&gt;&lt;br&gt;So on my laptop, for only a single worker nginx server, we've got ~28k r/s. The memory footprint of the &lt;code&gt;node&lt;/code&gt; process under load is 38.0m VIRT, 2.5m RES.&lt;br&gt;&lt;br&gt;For comparison, HelloWorld servers using nginx + php-fpm 5.2.8 gives ~6k r/s:&lt;br&gt;&lt;pre&gt;http_load -p 10 -s 5 url
29703 fetches, 10 max parallel, 326733 bytes, in 5 seconds
11 mean bytes/connection
5940.6 fetches/sec, 65346.6 bytes/sec
msecs/connect: 0.0394686 mean, 1.172 max, 0.02 min
msecs/first-response: 1.62616 mean, 6.744 max, 0.719 min
HTTP response codes:
  code 200 -- 29703
&lt;/pre&gt;And &lt;a target=&quot;_blank&quot; title=&quot;External link to http://nodejs.org/&quot; href=&quot;http://nodejs.org/&quot; class=&quot;externalLink&quot;&gt;node.js&lt;/a&gt; v0.6.1 yields 10k r/s:&lt;br&gt;&lt;pre&gt;51206 fetches, 10 max parallel, 614472 bytes, in 5 seconds
12 mean bytes/connection
10241.2 fetches/sec, 122894 bytes/sec
msecs/connect: 0.0356567 mean, 1.316 max, 0.019 min
msecs/first-response: 0.916395 mean, 14.236 max, 0.077 min
HTTP response codes:
  code 200 -- 51206
&lt;/pre&gt;The memory footprint of the &lt;code&gt;node&lt;/code&gt; process under load is 629m  VIRT, 50m RES.&lt;br&gt;</description>
<link>null#Benchmark</link>
<pubDate>Wed, 16 Nov 2011 12:34:00 GMT</pubDate>

</item>
<item>
<title>RoutingMySQLQueriesBasedOnURIArgs</title>
<description>&lt;a tiddler=&quot;RoutingMySQLQueriesBasedOnURIArgs&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;This sample demonstrates how to route incoming requests to different MySQL queries based on different combinations of URI query arguments, preserving streaming output capabilities provided by &lt;a tiddlylink=&quot;DrizzleNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DrizzleNginxModule&quot; href=&quot;null#DrizzleNginxModule&quot; class=&quot;externalLink null&quot;&gt;DrizzleNginxModule&lt;/a&gt; and &lt;a tiddlylink=&quot;RdsJsonNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#RdsJsonNginxModule&quot; href=&quot;null#RdsJsonNginxModule&quot; class=&quot;externalLink null&quot;&gt;RdsJsonNginxModule&lt;/a&gt;.&lt;br&gt;&lt;br&gt;This demo uses the modules &lt;a tiddlylink=&quot;DrizzleNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DrizzleNginxModule&quot; href=&quot;null#DrizzleNginxModule&quot; class=&quot;externalLink null&quot;&gt;DrizzleNginxModule&lt;/a&gt;, &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt;, &lt;a tiddlylink=&quot;RdsJsonNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#RdsJsonNginxModule&quot; href=&quot;null#RdsJsonNginxModule&quot; class=&quot;externalLink null&quot;&gt;RdsJsonNginxModule&lt;/a&gt;, and &lt;a tiddlylink=&quot;SetMiscNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SetMiscNginxModule&quot; href=&quot;null#SetMiscNginxModule&quot; class=&quot;externalLink null&quot;&gt;SetMiscNginxModule&lt;/a&gt; bundled by &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Here's the complete code listing for our &lt;code&gt;nginx.conf&lt;/code&gt;:&lt;br&gt;&lt;br&gt;&lt;pre&gt;worker_processes  2;
error_log logs/error.log warn;

events {
    worker_connections 1024;
}

http {
    upstream backend {
        drizzle_server 127.0.0.1:3306 protocol=mysql
                       dbname=ngx_test user=ngx_test password=ngx_test;
        drizzle_keepalive max=10 overflow=ignore mode=single;
    }

    server {
        listen 8080;

        location @cats-by-name {
            set_unescape_uri $name $arg_name;
            set_quote_sql_str $name;
            drizzle_query 'select * from cats where name=$name';
            drizzle_pass backend;
            rds_json on;
        }

        location @cats-by-id {
            set_quote_sql_str $id $arg_id;
            drizzle_query 'select * from cats where id=$id';
            drizzle_pass backend;
            rds_json on;
        }

        location = /cats {
            access_by_lua '
                if ngx.var.arg_name then
                    return ngx.exec(&quot;@cats-by-name&quot;)
                end

                if ngx.var.arg_id then
                    return ngx.exec(&quot;@cats-by-id&quot;)
                end
            ';

            rds_json_ret 400 &quot;expecting \&quot;name\&quot; or \&quot;id\&quot; query arguments&quot;;
        }
    }
}
&lt;/pre&gt;&lt;br&gt;And then we start our Nginx server with this configure file and test with our &lt;code&gt;/cats&lt;/code&gt; service like this:&lt;br&gt;&lt;pre&gt;$ curl 'localhost:8080/cats'
{&quot;errcode&quot;:400,&quot;errstr&quot;:&quot;expecting \&quot;name\&quot; or \&quot;id\&quot; query arguments&quot;}

$ curl 'localhost:8080/cats?name=bob'
[{&quot;id&quot;:3,&quot;name&quot;:&quot;bob&quot;}]

$ curl 'localhost:8080/cats?id=2'
[{&quot;id&quot;:2,&quot;name&quot;:null}]
&lt;/pre&gt;The actual output rows may vary depending on the actual contents in your &lt;code&gt;cats&lt;/code&gt; table anyway.&lt;br&gt;</description>
<link>null#RoutingMySQLQueriesBasedOnURIArgs</link>
<pubDate>Wed, 16 Nov 2011 04:22:00 GMT</pubDate>

</item>
<item>
<title>DynamicRoutingBasedOnRedis</title>
<description>&lt;a tiddler=&quot;DynamicRoutingBasedOnRedis&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;This sample demonstrates how to use Redis to route incoming requests to different HTTP backends based on the requests' &lt;code&gt;User-Agent&lt;/code&gt; header.&lt;br&gt;&lt;br&gt;This demo uses the modules &lt;a tiddlylink=&quot;Redis2NginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Redis2NginxModule&quot; href=&quot;null#Redis2NginxModule&quot; class=&quot;externalLink null&quot;&gt;Redis2NginxModule&lt;/a&gt;, &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt;, &lt;a tiddlylink=&quot;LuaRedisParserLibrary&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaRedisParserLibrary&quot; href=&quot;null#LuaRedisParserLibrary&quot; class=&quot;externalLink null&quot;&gt;LuaRedisParserLibrary&lt;/a&gt;, and &lt;a tiddlylink=&quot;SetMiscNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SetMiscNginxModule&quot; href=&quot;null#SetMiscNginxModule&quot; class=&quot;externalLink null&quot;&gt;SetMiscNginxModule&lt;/a&gt; bundled by &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Here's the complete code listing for our &lt;code&gt;nginx.conf&lt;/code&gt;:&lt;br&gt;&lt;br&gt;&lt;pre&gt;worker_processes  2;
error_log logs/error.log info;

events {
    worker_connections 1024;
}

http {
    upstream apache.org {
        server apache.org;
    }

    upstream nginx.org {
        server nginx.org;
    }

    server {
        listen 8080;

        location = /redis {
            internal;
            set_unescape_uri $key $arg_key;
            redis2_query get $key;
            redis2_pass 127.0.0.1:6379;
        }

        location / {
            set $target '';
            access_by_lua '
                local key = ngx.var.http_user_agent
                local res = ngx.location.capture(
                    &quot;/redis&quot;, { args = { key = key } }
                )

                print(&quot;key: &quot;, key)

                if res.status ~= 200 then
                    ngx.log(ngx.ERR, &quot;redis server returned bad status: &quot;,
                        res.status)
                    ngx.exit(res.status)
                end

                if not res.body then
                    ngx.log(ngx.ERR, &quot;redis returned empty body&quot;)
                    ngx.exit(500)
                end

                local parser = require &quot;redis.parser&quot;
                local server, typ = parser.parse_reply(res.body)
                if typ ~= parser.BULK_REPLY or not server then
                    ngx.log(ngx.ERR, &quot;bad redis response: &quot;, res.body)
                    ngx.exit(500)
                end

                print(&quot;server: &quot;, server)

                ngx.var.target = server
            ';

            proxy_pass http://$target;
        }
    }
}
&lt;/pre&gt;&lt;br&gt;And then let's start the redis server on the localhost:6379:&lt;br&gt;&lt;pre&gt;$ ./redis-server  # default port is 6379
&lt;/pre&gt;&lt;br&gt;and feed some keys into this using the redis-cli utility:&lt;br&gt;&lt;pre&gt;   $ ./redis-cli
   redis&amp;gt; set foo apache.org
   OK
   redis&amp;gt; set bar nginx.org
   OK
&lt;/pre&gt;And then let's test our nginx app!&lt;br&gt;&lt;pre&gt;   $ curl --user-agent foo localhost:8080
   &amp;lt;apache.org home page goes here&amp;gt;

   $ curl --user-agent bar localhost:8080
   &amp;lt;nginx.org home page goes here&amp;gt;
&lt;/pre&gt;To further tune the performance, one could enable the connection pool for the redis connections, as documented in &lt;a tiddlylink=&quot;Redis2NginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Redis2NginxModule&quot; href=&quot;null#Redis2NginxModule&quot; class=&quot;externalLink null&quot;&gt;Redis2NginxModule&lt;/a&gt;'s README.&lt;br&gt;&lt;br&gt;Before you benchmarking your interface defined here, please ensure that you've raised the error log level to &lt;code&gt;warn&lt;/code&gt; in your &lt;code&gt;nginx.conf&lt;/code&gt; file like this:&lt;br&gt;&lt;pre&gt;error_log logs/error.log warn;
&lt;/pre&gt;because flushing error log is a very expensive operation and can hurt performance a lot.&lt;br&gt;</description>
<link>null#DynamicRoutingBasedOnRedis</link>
<pubDate>Wed, 16 Nov 2011 04:17:00 GMT</pubDate>

</item>
<item>
<title>Samples</title>
<description>&lt;a tiddler=&quot;Samples&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt; &lt;a tiddlylink=&quot;RoutingMySQLQueriesBasedOnURIArgs&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#RoutingMySQLQueriesBasedOnURIArgs&quot; href=&quot;null#RoutingMySQLQueriesBasedOnURIArgs&quot; class=&quot;externalLink null&quot;&gt;Routing requests to different MySQL queries based on URI arguments&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a tiddlylink=&quot;DynamicRoutingBasedOnRedis&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DynamicRoutingBasedOnRedis&quot; href=&quot;null#DynamicRoutingBasedOnRedis&quot; class=&quot;externalLink null&quot;&gt;Dynamic Request Routing Based on Redis&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a tiddlylink=&quot;UsingLuaRocks&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#UsingLuaRocks&quot; href=&quot;null#UsingLuaRocks&quot; class=&quot;externalLink null&quot;&gt;Using LuaRocks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
<link>null#Samples</link>
<pubDate>Wed, 16 Nov 2011 04:17:00 GMT</pubDate>

</item>
<item>
<title>ChangeLog1000009</title>
<description>&lt;a tiddler=&quot;ChangeLog1000009&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt; Stable Release 1.0.9.10 - 16 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; bugfix: fixed the error message length while the &lt;code&gt;./configure&lt;/code&gt; script fails.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Components bundled in this release:&lt;br&gt;&lt;ul&gt;&lt;li&gt; LuaJIT-2.0.0-beta8&lt;/li&gt;&lt;li&gt; array-var-nginx-module-0.03rc1&lt;/li&gt;&lt;li&gt; auth-request-nginx-module-0.2&lt;/li&gt;&lt;li&gt; drizzle-nginx-module-0.1.2rc4&lt;/li&gt;&lt;li&gt; echo-nginx-module-0.37rc7&lt;/li&gt;&lt;li&gt; encrypted-session-nginx-module-0.01&lt;/li&gt;&lt;li&gt; form-input-nginx-module-0.07rc5&lt;/li&gt;&lt;li&gt; headers-more-nginx-module-0.16rc4&lt;/li&gt;&lt;li&gt; iconv-nginx-module-0.10rc5&lt;/li&gt;&lt;li&gt; lua-5.1.4&lt;/li&gt;&lt;li&gt; lua-cjson-1.0.3&lt;/li&gt;&lt;li&gt; lua-rds-parser-0.04&lt;/li&gt;&lt;li&gt; lua-redis-parser-0.09rc5&lt;/li&gt;&lt;li&gt; memc-nginx-module-0.13rc1&lt;/li&gt;&lt;li&gt; nginx-1.0.9&lt;/li&gt;&lt;li&gt; ngx_devel_kit-0.2.17&lt;/li&gt;&lt;li&gt; ngx_lua-0.3.1rc28&lt;/li&gt;&lt;li&gt; ngx_postgres-0.9rc2&lt;/li&gt;&lt;li&gt; rds-csv-nginx-module-0.04&lt;/li&gt;&lt;li&gt; rds-json-nginx-module-0.12rc6&lt;/li&gt;&lt;li&gt; redis2-nginx-module-0.08rc1&lt;/li&gt;&lt;li&gt; set-misc-nginx-module-0.22rc3&lt;/li&gt;&lt;li&gt; srcache-nginx-module-0.13rc2&lt;/li&gt;&lt;li&gt; upstream-keepalive-nginx-module-0.3&lt;/li&gt;&lt;li&gt; xss-nginx-module-0.03rc5&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.9.9 - 13 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;DrizzleNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DrizzleNginxModule&quot; href=&quot;null#DrizzleNginxModule&quot; class=&quot;externalLink null&quot;&gt;DrizzleNginxModule&lt;/a&gt; to 0.1.2rc4.&lt;ul&gt;&lt;li&gt; bugfix: it might prematurly remove a write event when still busily connecting to the database from the event model.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.9.7 - 10 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; applied &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.9-log_escape_non_ascii.patch&quot; href=&quot;https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.9-log_escape_non_ascii.patch&quot; class=&quot;externalLink&quot;&gt;a patch&lt;/a&gt; to add new directives &lt;code&gt;log_escape_non_ascii&lt;/code&gt; to prevent escaping non-ascii bytes in access log variable values. requested by &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/egis&quot; href=&quot;http://weibo.com/egis&quot; class=&quot;externalLink&quot;&gt;@姜大炮&lt;/a&gt;. It can be turned &lt;code&gt;on&lt;/code&gt; and &lt;code&gt;off&lt;/code&gt;, and default to &lt;code&gt;on&lt;/code&gt; just as the standard Nginx version.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.9.5 - 9 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc28.&lt;ul&gt;&lt;li&gt; bugfix: &lt;code&gt;Cache-Control&lt;/code&gt; header modification might introduce empty value headers when using with the standard &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpHeadersModule&quot; href=&quot;http://wiki.nginx.org/HttpHeadersModule&quot; class=&quot;externalLink&quot;&gt;ngx_headers&lt;/a&gt; module.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;HeadersMoreNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#HeadersMoreNginxModule&quot; href=&quot;null#HeadersMoreNginxModule&quot; class=&quot;externalLink null&quot;&gt;HeadersMoreNginxModule&lt;/a&gt; to 0.16rc4.&lt;ul&gt;&lt;li&gt; bugfix: &lt;code&gt;Cache-Control&lt;/code&gt; header modification might introduce empty value headers when using with the standard &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpHeadersModule&quot; href=&quot;http://wiki.nginx.org/HttpHeadersModule&quot; class=&quot;externalLink&quot;&gt;ngx_headers&lt;/a&gt; module.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.9.3 - 9 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc27.&lt;ul&gt;&lt;li&gt; feature: added the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.encode_args&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.encode_args&quot; class=&quot;externalLink&quot;&gt;ngx.encode_args&lt;/a&gt; method to encode a Lua code to a URI query string. thanks 郭颖 (&lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/shrimp0597&quot; href=&quot;http://weibo.com/shrimp0597&quot; class=&quot;externalLink&quot;&gt;0597虾&lt;/a&gt;).&lt;/li&gt;&lt;li&gt; feature: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; class=&quot;externalLink&quot;&gt;ngx.location.capture&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.exec&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.exec&quot; class=&quot;externalLink&quot;&gt;ngx.exec&lt;/a&gt; now supports the same Lua args table format as in &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.encode_args&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.encode_args&quot; class=&quot;externalLink&quot;&gt;ngx.encode_args&lt;/a&gt;. thanks 郭颖 (&lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/shrimp0597&quot; href=&quot;http://weibo.com/shrimp0597&quot; class=&quot;externalLink&quot;&gt;0597虾&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;DrizzleNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DrizzleNginxModule&quot; href=&quot;null#DrizzleNginxModule&quot; class=&quot;externalLink null&quot;&gt;DrizzleNginxModule&lt;/a&gt; to 0.1.2rc3.&lt;ul&gt;&lt;li&gt; bugfix: fixed issues with &lt;code&gt;poll&lt;/code&gt;, &lt;code&gt;rtsig&lt;/code&gt;, and &lt;code&gt;select&lt;/code&gt; used by the Nginx event model by eliminating the &lt;code&gt;poll&lt;/code&gt; syscall performed by &lt;code&gt;libdrizzle&lt;/code&gt;. This also gives rise to a nice speedup (about 10% in simple cases).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; bugfix: &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.9-variable_header_ignore_no_hash.patch&quot; href=&quot;https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.9-variable_header_ignore_no_hash.patch&quot; class=&quot;externalLink&quot;&gt;nginx-1.0.9-variable_header_ignore_no_hash.patch&lt;/a&gt; might introduce a memory overflow issue in multi-header variables. thanks Markus Linnala.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.9.1 - 8 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded the Nginx core to 1.0.9.&lt;/li&gt;&lt;li&gt; applied the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://mailman.nginx.org/pipermail/nginx-devel/2011-November/001408.html&quot; href=&quot;http://mailman.nginx.org/pipermail/nginx-devel/2011-November/001408.html&quot; class=&quot;externalLink&quot;&gt;epoll_check_stale_wev patch&lt;/a&gt; to the Nginx 1.0.9 core. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/u/1878897190&quot; href=&quot;http://weibo.com/u/1878897190&quot; class=&quot;externalLink&quot;&gt;@晓旭XX&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc26.&lt;ul&gt;&lt;li&gt; feature: added the &lt;code&gt;ctx&lt;/code&gt; option to &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.location.capture&quot; class=&quot;externalLink&quot;&gt;ngx.location.capture&lt;/a&gt;: you can now specify a custom Lua table to pass to the subrequest as its &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.ctx&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.ctx&quot; class=&quot;externalLink&quot;&gt;ngx.ctx&lt;/a&gt;. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/hugozhu&quot; href=&quot;http://weibo.com/hugozhu&quot; class=&quot;externalLink&quot;&gt;@hugozhu&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; bugfix: fixed compatibility with nginx 0.8.54. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/shrimp0597&quot; href=&quot;http://weibo.com/shrimp0597&quot; class=&quot;externalLink&quot;&gt;@0579虾&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;PostgresNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#PostgresNginxModule&quot; href=&quot;null#PostgresNginxModule&quot; class=&quot;externalLink null&quot;&gt;PostgresNginxModule&lt;/a&gt; to 0.9rc2&lt;ul&gt;&lt;li&gt; bugfix: now we log an error message when the &lt;code&gt;postgres_pass&lt;/code&gt; target is not found at all and returns 500 in this case instead of returning empty response.&lt;/li&gt;&lt;li&gt;  bugfix: we should no longer return &lt;code&gt;NGX_AGAIN&lt;/code&gt; when the re-polling returns IO WAIT in case of the &quot;connection made&quot; state.&lt;/li&gt;&lt;li&gt; feature: added some debugging outputs which be enabled by passing the &lt;code&gt;--with-debug&lt;/code&gt; option while building Nginx or &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; bugfix: fixed compatibility issues with Nginx 1.1.4+: &lt;code&gt;ngx_chain_update_chains&lt;/code&gt; now requires a pool argument.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaRdsParserLibrary&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaRdsParserLibrary&quot; href=&quot;null#LuaRdsParserLibrary&quot; class=&quot;externalLink null&quot;&gt;LuaRdsParserLibrary&lt;/a&gt; to 0.04.&lt;ul&gt;&lt;li&gt; bugfix: fixed a serious memory leak reported by bearnard.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;XssNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#XssNginxModule&quot; href=&quot;null#XssNginxModule&quot; class=&quot;externalLink null&quot;&gt;XssNginxModule&lt;/a&gt; to 0.03rc5.&lt;ul&gt;&lt;li&gt; bugfix: the callback argument value parser did not accept JavaScript identifier names started with underscores. thanks Sam Mulube.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;See &lt;a tiddlylink=&quot;ChangeLog1000008&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000008&quot; href=&quot;null#ChangeLog1000008&quot; class=&quot;externalLink null&quot;&gt;ChangeLog1000008&lt;/a&gt; for change log for ngx_openresty 1.0.8.x.</description>
<link>null#ChangeLog1000009</link>
<pubDate>Wed, 16 Nov 2011 03:14:00 GMT</pubDate>

</item>
<item>
<title>ChangeLog1000008</title>
<description>&lt;a tiddler=&quot;ChangeLog1000008&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt; Stable Release 1.0.8.26 - 3 November 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; now we require &lt;code&gt;gmake&lt;/code&gt; (&lt;code&gt;Gnu make&lt;/code&gt;) for &lt;code&gt;*BSD&lt;/code&gt; systems even if &lt;a tiddlylink=&quot;LuaJIT&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaJIT&quot; href=&quot;null#LuaJIT&quot; class=&quot;externalLink null&quot;&gt;LuaJIT&lt;/a&gt; is not enabled. thanks &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/lhmwzy&quot; href=&quot;http://weibo.com/lhmwzy&quot; class=&quot;externalLink&quot;&gt;@lhmwzy&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; upgraded the official &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.lua.org/ftp/patch-lua-5.1.4-4&quot; href=&quot;http://www.lua.org/ftp/patch-lua-5.1.4-4&quot; class=&quot;externalLink&quot;&gt;hotfix patch #4&lt;/a&gt; for the standard Lua 5.1.4 interpreter.&lt;/li&gt;&lt;/ul&gt;Components bundled in this release:&lt;br&gt;&lt;ul&gt;&lt;li&gt; LuaJIT-2.0.0-beta8&lt;/li&gt;&lt;li&gt; array-var-nginx-module-0.03rc1&lt;/li&gt;&lt;li&gt; auth-request-nginx-module-0.2&lt;/li&gt;&lt;li&gt; drizzle-nginx-module-0.1.2rc2&lt;/li&gt;&lt;li&gt; echo-nginx-module-0.37rc7&lt;/li&gt;&lt;li&gt; encrypted-session-nginx-module-0.01&lt;/li&gt;&lt;li&gt; form-input-nginx-module-0.07rc5&lt;/li&gt;&lt;li&gt; headers-more-nginx-module-0.16rc3&lt;/li&gt;&lt;li&gt; iconv-nginx-module-0.10rc5&lt;/li&gt;&lt;li&gt; lua-5.1.4&lt;/li&gt;&lt;li&gt; lua-cjson-1.0.3&lt;/li&gt;&lt;li&gt; lua-rds-parser-0.03&lt;/li&gt;&lt;li&gt; lua-redis-parser-0.09rc5&lt;/li&gt;&lt;li&gt; memc-nginx-module-0.13rc1&lt;/li&gt;&lt;li&gt; nginx-1.0.8&lt;/li&gt;&lt;li&gt; ngx_devel_kit-0.2.17&lt;/li&gt;&lt;li&gt; ngx_lua-0.3.1rc23&lt;/li&gt;&lt;li&gt; ngx_postgres-0.9rc1&lt;/li&gt;&lt;li&gt; rds-csv-nginx-module-0.04&lt;/li&gt;&lt;li&gt; rds-json-nginx-module-0.12rc6&lt;/li&gt;&lt;li&gt; redis2-nginx-module-0.08rc1&lt;/li&gt;&lt;li&gt; set-misc-nginx-module-0.22rc3&lt;/li&gt;&lt;li&gt; srcache-nginx-module-0.13rc2&lt;/li&gt;&lt;li&gt; upstream-keepalive-nginx-module-0.3&lt;/li&gt;&lt;li&gt; xss-nginx-module-0.03rc3&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.25 - 27 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc23.&lt;ul&gt;&lt;li&gt; bugfix: &lt;code&gt;ndk.set_var.DIRECTIVE&lt;/code&gt; had a memory issue and might pass empty argument values to the directive being called. thanks dannynoonan.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.23 - 27 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc22.&lt;ul&gt;&lt;li&gt; feature: implemented new methods &lt;code&gt;add&lt;/code&gt;, &lt;code&gt;replace&lt;/code&gt;, &lt;code&gt;incr&lt;/code&gt;, and &lt;code&gt;delete&lt;/code&gt; for &lt;code&gt;ngx.shared.DICT&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; bugfix: made the &lt;code&gt;set&lt;/code&gt; method of &lt;code&gt;ngx.shared.DICT&lt;/code&gt; return 3 values: &lt;code&gt;success&lt;/code&gt;, &lt;code&gt;err&lt;/code&gt;, and &lt;code&gt;forcible&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; bugfix: fixed spots of &lt;code&gt;-Werror=unused-but-set-variable&lt;/code&gt; warning issued by gcc 4.6.0.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.21 - 26 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc21.&lt;ul&gt;&lt;li&gt; feature: added new directive &lt;code&gt;lua_shared_dict&lt;/code&gt;: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#lua_shared_dict&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#lua_shared_dict&quot; class=&quot;externalLink&quot;&gt;http://wiki.nginx.org/HttpLuaModule#lua_shared_dict&lt;/a&gt;&lt;/li&gt;&lt;li&gt; feature: added Lua API for the shm-based dictionary: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT&quot; class=&quot;externalLink&quot;&gt;http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;EchoNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#EchoNginxModule&quot; href=&quot;null#EchoNginxModule&quot; class=&quot;externalLink null&quot;&gt;EchoNginxModule&lt;/a&gt; to 0.37rc7.&lt;ul&gt;&lt;li&gt; bugfix: fixed a memory issue in both &lt;code&gt;echo_sleep&lt;/code&gt; and &lt;code&gt;echo_blocking_sleep&lt;/code&gt;: we should not pass &lt;code&gt;ngx_str_t&lt;/code&gt; strings to &lt;code&gt;atof()&lt;/code&gt; which expects C strings.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.19 - 24 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc20.&lt;ul&gt;&lt;li&gt; bugfix: no longer free request body buffers that are not allocated by ourselves.&lt;/li&gt;&lt;li&gt; bugfix: now we allow setting &lt;code&gt;ngx.var.VARIABLE&lt;/code&gt; to &lt;code&gt;nil&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.17 - 22 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc19.&lt;ul&gt;&lt;li&gt; feature: now we apply the patch to the nginx core so as to allow main request body modifications: &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.8-allow_request_body_updating.patch&quot; href=&quot;https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.8-allow_request_body_updating.patch&quot; class=&quot;externalLink&quot;&gt;https://github.com/agentzh/ngx_openresty/blob/master/patches/nginx-1.0.8-allow_request_body_updating.patch&lt;/a&gt;&lt;/li&gt;&lt;li&gt; feature: added new Lua API &lt;code&gt;ngx.req.set_body_file()&lt;/code&gt;: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_file&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_file&quot; class=&quot;externalLink&quot;&gt;http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_file&lt;/a&gt;&lt;/li&gt;&lt;li&gt; feature: added new Lua API &lt;code&gt;ngx.req.set_body_data()&lt;/code&gt;: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_data&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_data&quot; class=&quot;externalLink&quot;&gt;http://wiki.nginx.org/HttpLuaModule#ngx.req.set_body_data&lt;/a&gt;&lt;/li&gt;&lt;li&gt; bugfix: &lt;code&gt;lua_need_request_body&lt;/code&gt; should not skip requests with methods other than &lt;code&gt;POST&lt;/code&gt; and &lt;code&gt;PUT&lt;/code&gt;. thanks Nginx User.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.15 - 19 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc17.&lt;ul&gt;&lt;li&gt; feature: added new Lua functions &lt;code&gt;ngx.req.read_body()&lt;/code&gt;, &lt;code&gt;ngx.req.discard_body()&lt;/code&gt;, &lt;code&gt;ngx.req.get_body_data()&lt;/code&gt;, and &lt;code&gt;ngx.req.get_body_file()&lt;/code&gt;. see the docs here: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/HttpLuaModule#ngx.req.read_body&quot; href=&quot;http://wiki.nginx.org/HttpLuaModule#ngx.req.read_body&quot; class=&quot;externalLink&quot;&gt;http://wiki.nginx.org/HttpLuaModule#ngx.req.read_body&lt;/a&gt;&lt;/li&gt;&lt;li&gt; bugfix: fixed hanging issues when using &lt;code&gt;ngx.exec()&lt;/code&gt; within &lt;code&gt;rewrite_by_lua&lt;/code&gt; and &lt;code&gt;access_by_lua&lt;/code&gt;. thanks Nginx User for reporting it.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.13 - 16 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc16.&lt;ul&gt;&lt;li&gt; fixed compilation failures when &lt;code&gt;--with-debug&lt;/code&gt; is turned off.&lt;/li&gt;&lt;li&gt; now we prohibit use of &lt;code&gt;true&lt;/code&gt; jump argument in &lt;code&gt;ngx.req.set_uri()&lt;/code&gt; in contexts other than &lt;code&gt;rewrite_by_lua&lt;/code&gt; and &lt;code&gt;rewrite_by_lua_file&lt;/code&gt;. a lua exception will be thrown if the context is incorrect.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.11 - 16 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc14.&lt;ul&gt;&lt;li&gt; now we change the &lt;code&gt;ngx.req.set_uri()&lt;/code&gt; API a bit by changing the optional argument &lt;code&gt;break_cycle&lt;/code&gt; to &lt;code&gt;jump&lt;/code&gt;. so now it will not trigger location jump by default (because the &lt;code&gt;jump&lt;/code&gt; argument is false by default) and in case &lt;code&gt;jump&lt;/code&gt; is given true, the function will re-search locations and jump to the new location and never return.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.9 - 16 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc13.&lt;ul&gt;&lt;li&gt; now we implemented &lt;code&gt;ngx.req.set_uri()&lt;/code&gt; and &lt;code&gt;ngx.req.set_uri_args()&lt;/code&gt; to emulate &lt;code&gt;ngx_rewrite&lt;/code&gt;'s &lt;code&gt;rewrite&lt;/code&gt; directive (without &lt;code&gt;redirect&lt;/code&gt; or &lt;code&gt;permanent&lt;/code&gt; modifiers). thanks Vladimir Protasov (utros) and Nginx User.&lt;/li&gt;&lt;li&gt; now we skip rewrite phase Lua handlers altogether if &lt;code&gt;ngx_rewrite&lt;/code&gt;'s &lt;code&gt;rewrite&lt;/code&gt; directive issue a location re-lookup by changing URIs (but not including rewrite ... break). thanks Nginx User.&lt;/li&gt;&lt;li&gt; added constant &lt;code&gt;ngx.HTTP_METHOD_NOT_IMPLEMENTED&lt;/code&gt; (501). thanks Nginx User.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.7 - 15 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;SrcacheNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SrcacheNginxModule&quot; href=&quot;null#SrcacheNginxModule&quot; class=&quot;externalLink null&quot;&gt;SrcacheNginxModule&lt;/a&gt; to 0.13rc2.&lt;ul&gt;&lt;li&gt; bugfix: we now only cache 200, 301, and 302 responses by default.&lt;/li&gt;&lt;li&gt; feature: implemented new directive &lt;code&gt;srcache_store_statuses&lt;/code&gt; to allow the user to specify the response status code list that is to be stored into the cache.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.5 - 13 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc11.&lt;ul&gt;&lt;li&gt; bugfix: now we explicitly clear all the modules' contexts before dump to named location with &lt;code&gt;ngx.exec&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;EchoNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#EchoNginxModule&quot; href=&quot;null#EchoNginxModule&quot; class=&quot;externalLink null&quot;&gt;EchoNginxModule&lt;/a&gt; to 0.37rc6.&lt;ul&gt;&lt;li&gt; bugfix: now we explicitly clear all the modules' contexts before dump to named location with &lt;code&gt;echo_exec&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; bugfix: bugfix: &lt;code&gt;echo_exec&lt;/code&gt; may hang when running after &lt;code&gt;echo_sleep&lt;/code&gt; (or other I/O interruption calls): we should have called &lt;code&gt;ngx_http_finalize_request&lt;/code&gt; on &lt;code&gt;NGX_DONE&lt;/code&gt; to decrement &lt;code&gt;r-&amp;gt;main-&amp;gt;count&lt;/code&gt; anyway.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; applied the patch to the Nginx core that always clears all modules' contexts in &lt;code&gt;ngx_http_named_location&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.3 - 13 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc10.&lt;ul&gt;&lt;li&gt; bugfix: calling &lt;code&gt;ngx.exec()&lt;/code&gt; to jump to a named location did not clear the context object of &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; properly and might cause evil problems. thanks Nginx User.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;IconvNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#IconvNginxModule&quot; href=&quot;null#IconvNginxModule&quot; class=&quot;externalLink null&quot;&gt;IconvNginxModule&lt;/a&gt; to 0.10rc5.&lt;ul&gt;&lt;li&gt; bugfix: fixed &lt;code&gt;-Wset-but-not-used&lt;/code&gt; warnings issued by gcc 4.6.0. thanks 支家乐 (Calio).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt; Devel Release 1.0.8.1 - 10 October 2011&lt;/h1&gt;&lt;ul&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;EchoNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#EchoNginxModule&quot; href=&quot;null#EchoNginxModule&quot; class=&quot;externalLink null&quot;&gt;EchoNginxModule&lt;/a&gt; to 0.37rc5.&lt;ul&gt;&lt;li&gt; bugfix: now we properly set the &lt;code&gt;Content-Length&lt;/code&gt; request header for subrequests.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;LuaNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#LuaNginxModule&quot; href=&quot;null#LuaNginxModule&quot; class=&quot;externalLink null&quot;&gt;LuaNginxModule&lt;/a&gt; to 0.3.1rc9.&lt;ul&gt;&lt;li&gt; feature: now for HTTP 1.0 requests, we disable the automatic full buffering mode if the user sets the &lt;code&gt;Content-Length&lt;/code&gt; 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 李子义.&lt;/li&gt;&lt;li&gt; bugfix: now we properly support setting the &lt;code&gt;Cache-Control&lt;/code&gt; response header via the &lt;code&gt;ngx.header.HEADER&lt;/code&gt; interface.&lt;/li&gt;&lt;li&gt; bugfix: no longer set header hash to 1. use the &lt;code&gt;ngx_hash_key_lc&lt;/code&gt; instead.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;HeadersMoreNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#HeadersMoreNginxModule&quot; href=&quot;null#HeadersMoreNginxModule&quot; class=&quot;externalLink null&quot;&gt;HeadersMoreNginxModule&lt;/a&gt; to 0.16rc3.&lt;ul&gt;&lt;li&gt; bugfix: we should set header hash using &lt;code&gt;ngx_hash_key_lc&lt;/code&gt;, not simply to 1.&lt;/li&gt;&lt;li&gt; bugfix: fixed setting &lt;code&gt;Cache-Control&lt;/code&gt; response headers. we should properly prepare the &lt;code&gt;r-&amp;gt;cache_control&lt;/code&gt; array as well.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;SrcacheNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SrcacheNginxModule&quot; href=&quot;null#SrcacheNginxModule&quot; class=&quot;externalLink null&quot;&gt;SrcacheNginxModule&lt;/a&gt; to 0.13rc1.&lt;ul&gt;&lt;li&gt; implemented response status line and general response header caching and added new directives &lt;code&gt;srcache_store_hide_header&lt;/code&gt; and &lt;code&gt;srcache_store_pass_header&lt;/code&gt; to control which headers to cache and which not.&lt;/li&gt;&lt;li&gt; added new directive &lt;code&gt;srcache_response_cache_control&lt;/code&gt; to control whether honor response headers &lt;code&gt;Cache-Control&lt;/code&gt; and &lt;code&gt;Expires&lt;/code&gt;, default &lt;code&gt;on&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; we disable &lt;code&gt;srcache_store&lt;/code&gt; automatically by default when &lt;code&gt;Cache-Control: max-age=0&lt;/code&gt; and &lt;code&gt;Expires: &amp;lt;date no more recently than now&amp;gt;&lt;/code&gt; are seen.&lt;/li&gt;&lt;li&gt; implemented builtin nginx variable &lt;code&gt;$srcache_expire&lt;/code&gt; for automatic expiration time calculation based on response headers &lt;code&gt;Cache-Control&lt;/code&gt; (&lt;code&gt;max-age&lt;/code&gt;) and &lt;code&gt;Expires&lt;/code&gt;; also added new directives &lt;code&gt;srcache_max_expire&lt;/code&gt; and &lt;code&gt;srcache_default_expire&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; implemented the &lt;code&gt;srcache_store_no_cache&lt;/code&gt; directive; now by default, we do not store responses with the header &lt;code&gt;Cache-Control: no-cache&lt;/code&gt; into the cache.&lt;/li&gt;&lt;li&gt; implemented &lt;code&gt;the srcache_store_no_store directive&lt;/code&gt; (default &lt;code&gt;off&lt;/code&gt;). Now by default, responses with the header &lt;code&gt;Cache-Control: no-store&lt;/code&gt; will not be stored into the cache.&lt;/li&gt;&lt;li&gt; implemented the &lt;code&gt;srcache_store_private&lt;/code&gt; directive to control whether to store responses with the header &lt;code&gt;Cache-Control: private&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; implemented the &lt;code&gt;srcache_request_cache_control&lt;/code&gt; directive to allow request headers &lt;code&gt;Cache-Control: no-cache&lt;/code&gt; or &lt;code&gt;Pragma: no-cache&lt;/code&gt; to force bypassing cache lookup. it also honors the request header &lt;code&gt;Cache-Control: no-store&lt;/code&gt;. this directive is turned off by default.&lt;/li&gt;&lt;li&gt; now we check response header &lt;code&gt;Content-Encoding&lt;/code&gt; by default and a non-empty header value will &lt;code&gt;skip srcache_store&lt;/code&gt;; also introduced a new directive named &lt;code&gt;srcache_ignore_content_encoding&lt;/code&gt; to ignore this response header.&lt;/li&gt;&lt;li&gt; implemented the &lt;code&gt;srcache_methods&lt;/code&gt; directive to specify request methods that are cacheable, by default, only &lt;code&gt;GET&lt;/code&gt; and &lt;code&gt;HEAD&lt;/code&gt; are cacheable.&lt;/li&gt;&lt;li&gt; bugfix: we no longer set header hash to 1; we use &lt;code&gt;ngx_hash_key_lc&lt;/code&gt; instead.&lt;/li&gt;&lt;li&gt; bugfix: when we skip &lt;code&gt;srcache_fetch&lt;/code&gt; by means of &lt;code&gt;srcache_fetch_skip&lt;/code&gt;, we should not automatically skip &lt;code&gt;srcache_store&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; bugfix: now we ignore the &lt;code&gt;Content-Length&lt;/code&gt; header (if any) of the main request for the subrequests.&lt;/li&gt;&lt;li&gt; bugfix: there might be a segfault when failing to allocate memory in &lt;code&gt;ngx_http_srcache_add_copy_chain&lt;/code&gt;. thanks Shaun savage.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;RdsJsonNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#RdsJsonNginxModule&quot; href=&quot;null#RdsJsonNginxModule&quot; class=&quot;externalLink null&quot;&gt;RdsJsonNginxModule&lt;/a&gt; to 0.12rc6.&lt;ul&gt;&lt;li&gt; bugfix: fixed compatibility with nginx 1.1.4+.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;RdsCsvNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#RdsCsvNginxModule&quot; href=&quot;null#RdsCsvNginxModule&quot; class=&quot;externalLink null&quot;&gt;RdsCsvNginxModule&lt;/a&gt; to 0.04.&lt;ul&gt;&lt;li&gt; bugfix: fixed compatibility issues with nginx 1.1.4+.&lt;/li&gt;&lt;li&gt; optimization: now we only register our filters when &lt;code&gt;rds_csv&lt;/code&gt; is actually used in &lt;code&gt;nginx.conf&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;Redis2NginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#Redis2NginxModule&quot; href=&quot;null#Redis2NginxModule&quot; class=&quot;externalLink null&quot;&gt;Redis2NginxModule&lt;/a&gt; to 0.08rc1.&lt;ul&gt;&lt;li&gt; bugfix: fixed compatibility with nginx 1.1.4+.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;DrizzleNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#DrizzleNginxModule&quot; href=&quot;null#DrizzleNginxModule&quot; class=&quot;externalLink null&quot;&gt;DrizzleNginxModule&lt;/a&gt; to 0.1.2rc2.&lt;ul&gt;&lt;li&gt; bugfix: fixed compatibility with nginx 1.1.4+&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;MemcNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#MemcNginxModule&quot; href=&quot;null#MemcNginxModule&quot; class=&quot;externalLink null&quot;&gt;MemcNginxModule&lt;/a&gt; to 0.13rc1.&lt;ul&gt;&lt;li&gt; bugfix: fixed compatibility with nginx 1.1.4+.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; upgraded &lt;a tiddlylink=&quot;SetMiscNginxModule&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#SetMiscNginxModule&quot; href=&quot;null#SetMiscNginxModule&quot; class=&quot;externalLink null&quot;&gt;SetMiscNginxModule&lt;/a&gt; to v0.22rc3.&lt;ul&gt;&lt;li&gt; minor code cleanup.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; applied the patch for the variable-header-ignore-no-hash issue. see &lt;a target=&quot;_blank&quot; title=&quot;External link to http://forum.nginx.org/read.php?29,216062&quot; href=&quot;http://forum.nginx.org/read.php?29,216062&quot; class=&quot;externalLink&quot;&gt;http://forum.nginx.org/read.php?29,216062&lt;/a&gt; for details.&lt;/li&gt;&lt;li&gt; based on &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#OpenResty&quot; href=&quot;null#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; 1.0.6.22 and upgraded the Nginx core to 1.0.8.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;See &lt;a tiddlylink=&quot;ChangeLog1000006&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to null#ChangeLog1000006&quot; href=&quot;null#ChangeLog1000006&quot; class=&quot;externalLink null&quot;&gt;ChangeLog1000006&lt;/a&gt; for change log for ngx_openresty 1.0.6.x.&lt;br&gt;</description>
<link>null#ChangeLog1000008</link>
<pubDate>Thu, 03 Nov 2011 09:08:00 GMT</pubDate>

</item>
</channel>
</rss>
