forked from openresty/openresty.org
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.xml
executable file
·231 lines (211 loc) · 234 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>OpenResty</title>
<description>Scalable Web Platform based on NGINX</description>
<language>en</language>
<copyright>Copyright 2015 YichunZhang</copyright>
<pubDate>Tue, 29 Dec 2015 22:35:40 GMT</pubDate>
<lastBuildDate>Tue, 29 Dec 2015 22:35:40 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>TiddlyWiki 2.6.2</generator>
<item>
<title>ContactUs</title>
<description><a tiddler="ContactUs" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><br>You can join the English or Chinese mailing lists shown on the page <a tiddlylink="Community" refresh="link" target="_blank" title="External link to null#Community" href="null#Community" class="externalLink null">OpenResty Community</a>. This is usually the preferred communication channel.<br><br>If you need private communication, please contact us by emails via <code>[email protected]</code>.<br><br>Reporting bugs are encouraged to file tickets for the ngx_openresty project on <a tiddlylink="GitHub" refresh="link" target="_blank" title="External link to null#GitHub" href="null#GitHub" class="externalLink null">GitHub</a>:<br><br><a target="_blank" title="External link to https://github.com/openresty/ngx_openresty/issues" href="https://github.com/openresty/ngx_openresty/issues" class="externalLink">https://github.com/openresty/ngx_openresty/issues</a></description>
<link>null#ContactUs</link>
<pubDate>Tue, 29 Dec 2015 22:35:40 GMT</pubDate>
</item>
<item>
<title>DonateOnline</title>
<description><a tiddler="DonateOnline" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><h1> Large Grants</h1><br>For large grants to the <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> Software Foundation, please contact <code>[email protected]</code> via emails.<br><br><h1> Donate With PayPal</h1><br>If you'd like to make a one-time small donation to <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>, you can use PayPal to make it fast and easy.<br><br><ul><li> PayPal members can donate directly from their PayPal accounts by logging in via the PayPal website and clicking "send money" to <code>[email protected]</code>, or just click the button below.</li><li> 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.</li></ul><br><span>
<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input name="cmd" value="_xclick" type="hidden">
<input name="business" value="[email protected]" type="hidden">
<input name="item_name" value="OpenResty Donation (in USD)" type="hidden">
<input name="currency_code" value="USD" type="hidden">
<input name="amount" value="" type="hidden">
<input src="donate_button_paypal_01.gif" name="submit" alt="Donate with PayPal" border="0" type="image">
</form>
</span><br><br><h1> Donate with AliPay (支付宝)</h1><br>If you're in China, it's usually more convenient to send donation is to send money via the <a target="_blank" title="External link to http://www.alipay.com/" href="http://www.alipay.com/" class="externalLink">AliPay</a> to my account <code>[email protected]</code> or just click the following button:<br><br><span>
<form name="atool_alipay_img_form" style="padding-bottom: 0;border:none;" method="post" action="https://shenghuo.alipay.com/send/payment/fill.htm" target="_blank" accept-charset="GBK" onsubmit="document.charset='gbk';"><input value="[email protected]" name="optEmail" type="hidden"><input value="" name="payAmount" type="hidden"><input name="title" placeholder="付款说明" value="给 OpenResty 捐款" type="hidden"><input value="支付宝收款" src="donate-with-alipay.png" name="pay" type="image"></form>
</span><br><br>Alternatively you can scan the following QR code in your Alipay cellphone app:<br><br><span>
<img src="alipay-qrcode.png" width="150">
</span><br><br>Any amount will be highly appreciated!<br></description>
<link>null#DonateOnline</link>
<pubDate>Tue, 29 Dec 2015 22:33:06 GMT</pubDate>
</item>
<item>
<title>Resources</title>
<description><a tiddler="Resources" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><br><h1> English Articles</h1><br><ul><li> An Introduction To OpenResty (nginx + lua) - Part 1, by Karl Seguin</li></ul><dl><dd> <a target="_blank" title="External link to http://openmymind.net/An-Introduction-To-OpenResty-Nginx-Lua/" href="http://openmymind.net/An-Introduction-To-OpenResty-Nginx-Lua/" class="externalLink">http://openmymind.net/An-Introduction-To-OpenResty-Nginx-Lua/</a></dd></dl><ul><li> Ceryx - A dynamic NGINX, by Antonis Kalipetis</li></ul><dl><dd> <a target="_blank" title="External link to https://www.sourcelair.com/blog/articles/75/ceryx-dynamic-nginx" href="https://www.sourcelair.com/blog/articles/75/ceryx-dynamic-nginx" class="externalLink">https://www.sourcelair.com/blog/articles/75/ceryx-dynamic-nginx</a></dd></dl><ul><li> Rearchitecting <a tiddlylink="GitHub" refresh="link" target="_blank" title="External link to null#GitHub" href="null#GitHub" class="externalLink null">GitHub</a> Pages, by Charlie Somerville</li></ul><dl><dd> <a target="_blank" title="External link to http://githubengineering.com/rearchitecting-github-pages/" href="http://githubengineering.com/rearchitecting-github-pages/" class="externalLink">http://githubengineering.com/rearchitecting-github-pages/</a></dd></dl><ul><li> CloudFlare's new WAF: compiling to Lua, by John Graham-Cumming.</li></ul><dl><dd> <a target="_blank" title="External link to https://blog.cloudflare.com/cloudflares-new-waf-compiling-to-lua/" href="https://blog.cloudflare.com/cloudflares-new-waf-compiling-to-lua/" class="externalLink">https://blog.cloudflare.com/cloudflares-new-waf-compiling-to-lua/</a></dd></dl><ul><li> Dynamic CDN, by Ankit Jain</li></ul><dl><dd> <a target="_blank" title="External link to http://engineering.wingify.com/posts/dynamic-cdn/" href="http://engineering.wingify.com/posts/dynamic-cdn/" class="externalLink">http://engineering.wingify.com/posts/dynamic-cdn/</a></dd></dl><ul><li> Scaling with Queues, by Rohit Yadav.</li></ul><dl><dd> <a target="_blank" title="External link to http://engineering.wingify.com/scaling-with-queues/" href="http://engineering.wingify.com/scaling-with-queues/" class="externalLink">http://engineering.wingify.com/scaling-with-queues/</a></dd></dl><ul><li> Nginx image processing server with <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> and Lua, by leafo.</li></ul><dl><dd> <a target="_blank" title="External link to http://leafo.net/posts/creating_an_image_server.html" href="http://leafo.net/posts/creating_an_image_server.html" class="externalLink">http://leafo.net/posts/creating_an_image_server.html</a></dd></dl><ul><li> WebSockets with <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>, by Aapo Talvensaari.</li></ul><dl><dd> <a target="_blank" title="External link to https://medium.com/p/1778601c9e05" href="https://medium.com/p/1778601c9e05" class="externalLink">https://medium.com/p/1778601c9e05</a></dd></dl><ul><li> Scaling TextRazor in the Cloud with Nginx and Lua, by Toby.</li></ul><dl><dd> <a target="_blank" title="External link to http://www.textrazor.com/blog/2013/03/scaling-textrazor-in-the-cloud-with-nginx-and-lua.html" href="http://www.textrazor.com/blog/2013/03/scaling-textrazor-in-the-cloud-with-nginx-and-lua.html" class="externalLink">http://www.textrazor.com/blog/2013/03/scaling-textrazor-in-the-cloud-with-nginx-and-lua.html</a></dd></dl><ul><li> Augmenting APIs with Nginx and Lua, by Raimon Grau</li></ul><dl><dd> <a target="_blank" title="External link to http://3scale.github.com/2013/01/09/augment-your-api-without-touching-it/" href="http://3scale.github.com/2013/01/09/augment-your-api-without-touching-it/" class="externalLink">http://3scale.github.com/2013/01/09/augment-your-api-without-touching-it/</a></dd></dl><ul><li> Pushing Nginx to its limit with Lua, by Matthieu Tourne</li></ul><dl><dd> <a target="_blank" title="External link to http://blog.cloudflare.com/pushing-nginx-to-its-limit-with-lua" href="http://blog.cloudflare.com/pushing-nginx-to-its-limit-with-lua" class="externalLink">http://blog.cloudflare.com/pushing-nginx-to-its-limit-with-lua</a></dd></dl><ul><li> Yak Shaving: Adding OAuth Support to Nginx via Lua, by Jose Diaz-Gonzalez</li></ul><dl><dd> <a target="_blank" title="External link to http://seatgeek.com/blog/dev/oauth-support-for-nginx-with-lua" href="http://seatgeek.com/blog/dev/oauth-support-for-nginx-with-lua" class="externalLink">http://seatgeek.com/blog/dev/oauth-support-for-nginx-with-lua</a></dd></dl><ul><li> My beautiful dark twisted reverse-proxy LRU cache, by Mike Ferrier</li></ul><dl><dd> <a target="_blank" title="External link to http://mikeferrier.com/2011/05/14/my-beautiful-dark-twisted-reverse-proxy-LRU-cache/" href="http://mikeferrier.com/2011/05/14/my-beautiful-dark-twisted-reverse-proxy-LRU-cache/" class="externalLink">http://mikeferrier.com/2011/05/14/my-beautiful-dark-twisted-reverse-proxy-LRU-cache/</a></dd></dl><ul><li> Day 41 - Setting up ngx_openresty (WAS: testing Test::Nginx) , by Antoine Bonavita</li></ul><dl><dd> <a target="_blank" title="External link to http://www.nginx-discovery.com/2011/03/day-41-setting-up-ngxopenresty-was.html" href="http://www.nginx-discovery.com/2011/03/day-41-setting-up-ngxopenresty-was.html" class="externalLink">http://www.nginx-discovery.com/2011/03/day-41-setting-up-ngxopenresty-was.html</a></dd></dl><h1> Chinese Articles</h1><ul><li> An introduction to <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>, by Wang Dong</li></ul><dl><dd> <a target="_blank" title="External link to http://wdicc.com/intro-openresty/" href="http://wdicc.com/intro-openresty/" class="externalLink">http://wdicc.com/intro-openresty/</a></dd></dl><ul><li> Nginx 3rd-Party Module Experiments Journal, by smallfish</li></ul><dl><dd> <a target="_blank" title="External link to http://chenxiaoyu.org/2011/10/30/nginx-modules.html" href="http://chenxiaoyu.org/2011/10/30/nginx-modules.html" class="externalLink">http://chenxiaoyu.org/2011/10/30/nginx-modules.html</a></dd></dl><ul><li> Recommending <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> - An Nginx Version with Fully Capable Addons, by Wendal Chen</li></ul><dl><dd> <a target="_blank" title="External link to http://wendal.net/338.html" href="http://wendal.net/338.html" class="externalLink">http://wendal.net/338.html</a></dd></dl><ul><li> Constructing Efficient and Transparent Caching Mechanism with <a tiddlylink="MemcNginxModule" refresh="link" target="_blank" title="External link to null#MemcNginxModule" href="null#MemcNginxModule" class="externalLink null">MemcNginxModule</a> and <a tiddlylink="SrcacheNginxModule" refresh="link" target="_blank" title="External link to null#SrcacheNginxModule" href="null#SrcacheNginxModule" class="externalLink null">SrcacheNginxModule</a>, by Zhang Yang</li></ul><dl><dd> <a target="_blank" title="External link to http://www.codinglabs.org/html/nginx-memc-and-srcache.html" href="http://www.codinglabs.org/html/nginx-memc-and-srcache.html" class="externalLink">http://www.codinglabs.org/html/nginx-memc-and-srcache.html</a></dd></dl><ul><li> The Nginx Session Module, by smallfish</li></ul><dl><dd> <a target="_blank" title="External link to http://chenxiaoyu.org/2011/11/09/nginx-session.html" href="http://chenxiaoyu.org/2011/11/09/nginx-session.html" class="externalLink">http://chenxiaoyu.org/2011/11/09/nginx-session.html</a></dd></dl><ul><li> Nginx-Lua HTTP 401 Basic Authentication, by smallfish</li></ul><dl><dd> <a target="_blank" title="External link to http://chenxiaoyu.org/2012/02/08/nginx-lua-401-auth.html" href="http://chenxiaoyu.org/2012/02/08/nginx-lua-401-auth.html" class="externalLink">http://chenxiaoyu.org/2012/02/08/nginx-lua-401-auth.html</a></dd></dl><ul><li> Using ngx_openresty to create an AJAX-style pager for data listing, by lhmwzy</li></ul><dl><dd> <a target="_blank" title="External link to http://blog.163.com/lhmwzy@126/blog/static/64215736201212384413704/" href="http://blog.163.com/lhmwzy@126/blog/static/64215736201212384413704/" class="externalLink">http://blog.163.com/lhmwzy@126/blog/static/64215736201212384413704/</a></dd></dl><ul><li> Nginx Variable Tutorials, by agentzh</li></ul><dl><dd> <a target="_blank" title="External link to http://blog.sina.com.cn/openresty" href="http://blog.sina.com.cn/openresty" class="externalLink">http://blog.sina.com.cn/openresty</a></dd></dl><ul><li> Nginx &amp; Lua, by laowang</li></ul><dl><dd> <a target="_blank" title="External link to http://huoding.com/2012/08/31/156" href="http://huoding.com/2012/08/31/156" class="externalLink">http://huoding.com/2012/08/31/156</a></dd></dl><ul><li> Implementing a simple server-push solution, by laowang</li></ul><dl><dd> <a target="_blank" title="External link to http://huoding.com/2012/09/28/174" href="http://huoding.com/2012/09/28/174" class="externalLink">http://huoding.com/2012/09/28/174</a></dd></dl></description>
<category>Resources</category>
<link>null#Resources</link>
<pubDate>Sun, 27 Dec 2015 05:46:00 GMT</pubDate>
</item>
<item>
<title>ChangeLog1009007</title>
<description><a tiddler="ChangeLog1009007" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><h1> Version 1.9.7.1 - 25 December 2015</h1><ul><li> upgraded the Nginx core to 1.9.7.<ul><li> see the changes here: <a target="_blank" title="External link to http://nginx.org/en/CHANGES" href="http://nginx.org/en/CHANGES" class="externalLink">http://nginx.org/en/CHANGES</a></li></ul></li><li> <code>./configure</code>: now we automatically set the environment <code>MACOSX_DEPLOYMENT_TARGET</code> to the current Mac OS X version (unless the environment is already set) to ensure the <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> build uses the current versions of the system libraries. thanks bsyk for the report.</li><li> win32: use Windows line breaks in the <code>resty</code> script file of the binary distribution.</li><li> win32: upgraded pcre to 8.38 and openssl to 1.0.2e.</li><li> win32: enabled ngx_http_realip_module, ngx_http_addition_module ngx_http_sub_module, and ngx_http_stub_status_module in the win32 binary package by default.</li><li> upgraded <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> to 0.9.20.<ul><li> feature: added new API functions <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxworkercount" href="https://github.com/openresty/lua-nginx-module#ngxworkercount" class="externalLink">ngx.worker.count()</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxworkerid" href="https://github.com/openresty/lua-nginx-module#ngxworkerid" class="externalLink">ngx.worker.id()</a> for returning the total count of nginx worker processes and the ordinal number (0, 1, 2, and etc) of the current worker. thanks YuanSheng Wang for the patch. also added pure C API for them.</li><li> feature: added new API functions <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxtimerpending_count" href="https://github.com/openresty/lua-nginx-module#ngxtimerpending_count" class="externalLink">ngx.timer.pending_count()</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxtimerrunning_count" href="https://github.com/openresty/lua-nginx-module#ngxtimerrunning_count" class="externalLink">ngx.timer.running_count()</a>. thanks Simon Eskildsen for the patch.</li><li> feature: added new config directive <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#access_by_lua_no_postpone" href="https://github.com/openresty/lua-nginx-module#access_by_lua_no_postpone" class="externalLink">access_by_lua_no_postpone</a>. thanks Delta Yeh for the patch.</li><li> feature: added new constant <code>ngx.HTTP_TEMPORARY_REDIRECT</code> (307) and support for 307 in <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxredirect" href="https://github.com/openresty/lua-nginx-module#ngxredirect" class="externalLink">ngx.redirect()</a>. thanks RocFang for the patch.</li><li> feature: added new API function <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqis_internal" href="https://github.com/openresty/lua-nginx-module#ngxreqis_internal" class="externalLink">ngx.req.is_internal()</a> for testing if the current request is an internal request. thanks Ruoshan Huang for the patch.</li><li> feature: added many more HTTP status constants as <code>ngx.HTTP_XXX</code>. thanks Vadim A. Misbakh-Soloviov for the patch.</li><li> bugfix: bogus <code>nginx.conf</code> parse failure "Lua code block missing the "}" character" might happen when there are many Lua code blocks inlined. thanks Andreas Lubbe for the report.</li><li> bugfix: bogus "subrequests cycle" errors might occur with nginx 1.9.5+ due to the recent changes in the nginx core.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args" href="https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args" class="externalLink">ngx.req.get_uri_args</a>/<a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqget_post_args" href="https://github.com/openresty/lua-nginx-module#ngxreqget_post_args" class="externalLink">ngx.req.get_post_args</a>: avoided allocating a zero-size buffer in the nginx memory pool since it might cause problems. thanks Chuanwen Chen for the report and patch.</li><li> bugfix: modifying the built-in header <code>X-Forwarded-For</code> via <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqset_header" href="https://github.com/openresty/lua-nginx-module#ngxreqset_header" class="externalLink">ngx.req.set_header()</a> or <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqclear_header" href="https://github.com/openresty/lua-nginx-module#ngxreqclear_header" class="externalLink">ngx.req.clear_header()</a> might not take effect in some parts of the nginx core (like <code>$proxy_add_x_forwarded_for</code>). thanks aviramc for the patch.</li><li> bugfix: we lacked detailed context info in error messages due to use of disabled Lua API in <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#body_filter_by_lua" href="https://github.com/openresty/lua-nginx-module#body_filter_by_lua" class="externalLink">body_filter_by_lua*</a>. thanks Dejiang Zhu for the patch.</li><li> bugfix: fixed a potential data alignment issue in the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxvarvariable" href="https://github.com/openresty/lua-nginx-module#ngxvarvariable" class="externalLink">ngx.var</a> setter API.</li><li> bugfix: we had data alignment issues in the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxlocationcapture" href="https://github.com/openresty/lua-nginx-module#ngxlocationcapture" class="externalLink">subrequest API</a> which can explode on systems like ARM. thanks Stefan Parvu for providing the test environment.</li><li> bugfix: there was a data alignment issue in the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#tcpsocksetkeepalive" href="https://github.com/openresty/lua-nginx-module#tcpsocksetkeepalive" class="externalLink">tcpsock:setkeepalive()</a> implementation which might lead to crashes on ARM systems. thanks Stefan Parvu for the report.</li><li> bugfix: fixed C compiler warnings "comparison between signed and unsigned integer expressions" on Windows.</li><li> optimize: avoided allocating in the nginx request memory pool in stream-typed cosockets' <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#tcpsockreceive" href="https://github.com/openresty/lua-nginx-module#tcpsockreceive" class="externalLink">receive*()</a> methods. thanks Lourival Vieira Neto for the patch.</li><li> optimize: reduced memory allocations in stream-typed cosockets. thanks Dejiang Zhu for the patch.<ul><li> avoided allocating the host name buffer when getting peers from the connection pool.</li><li> recycled the stream cosockets' request cleanup records.</li></ul></li><li> doc: documented the minimum size threshold in <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_shared_dict" href="https://github.com/openresty/lua-nginx-module#lua_shared_dict" class="externalLink">lua_shared_dict</a>. thanks mlr3000 for the original patch.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyCoreLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyCoreLibrary" href="null#LuaRestyCoreLibrary" class="externalLink null">LuaRestyCoreLibrary</a> to 0.1.3.<ul><li> Makefile: added support for relative paths in <code>LUA_LIB_DIR</code>.</li><li> minor code adjustments from Aapo Talvensaari.</li></ul></li><li> upgraded <a tiddlylink="HeadersMoreNginxModule" refresh="link" target="_blank" title="External link to null#HeadersMoreNginxModule" href="null#HeadersMoreNginxModule" class="externalLink null">HeadersMoreNginxModule</a> to 0.29.<ul><li> bugfix: changing the built-in header <code>X-Forwarded-For</code> via <a target="_blank" title="External link to https://github.com/openresty/headers-more-nginx-module#more_set_input_headers" href="https://github.com/openresty/headers-more-nginx-module#more_set_input_headers" class="externalLink">more_set_input_headers</a> or <a target="_blank" title="External link to https://github.com/openresty/headers-more-nginx-module#more_clear_input_headers" href="https://github.com/openresty/headers-more-nginx-module#more_clear_input_headers" class="externalLink">more_clear_input_headers</a> might not take effect in some parts of the nginx core (like <code>$proxy_add_x_forwarded_for</code>).</li></ul></li><li> upgraded <a tiddlylink="LuaRestyRedisLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyRedisLibrary" href="null#LuaRestyRedisLibrary" class="externalLink null">LuaRestyRedisLibrary</a> to 0.22.<ul><li> tweaked Makefile to allow relative paths in <code>LUA_LIB_DIR</code> when <code>DESTDIR</code> is not specified.</li><li> optimize: moved string concatenation for the Redis request construction onto the C land (taking advantage of the feature that cosockets' <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#tcpsocksend" href="https://github.com/openresty/lua-nginx-module#tcpsocksend" class="externalLink">send</a> method accepts a table of strings). thanks Dejiang Zhu for the patch.</li><li> optimize: minor optimizations from Aapo Talvensaari.</li></ul></li><li> upgraded <a tiddlylink="RestyCLI" refresh="link" target="_blank" title="External link to null#RestyCLI" href="null#RestyCLI" class="externalLink null">RestyCLI</a> to 0.05.<ul><li> bugfix: resty: nginx might report the error "The system cannot find the file specified" in <code>CreateFile()</code> on Windows XP. thanks cover_eye for the report.</li></ul></li><li> upgraded <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> to v2.1-20151219: <a target="_blank" title="External link to https://github.com/openresty/luajit2/tags" href="https://github.com/openresty/luajit2/tags" class="externalLink">https://github.com/openresty/luajit2/tags</a><ul><li> Makefile: ensure we always install the symbolic link for the "luajit" file.</li><li> imported Mike Pall's latest changes:<ul><li> FFI: Fix SPLIT pass for CONV i64.u64.</li><li> x64/LJ_GC64: Fix stack growth in vararg function setup.</li><li> DynASM/x86: Add rdpmc instruction.</li><li> OSX: Switch to Clang as the default compiler.</li><li> iOS: Disable os.execute() when building for iOS &gt;= 8.0.</li><li> x86/x64: Disassemble AVX/AVX2 instructions.</li><li> DynASM/x86: Add AVX and AVX2 opcodes.</li><li> DynASM/x86: Add AES-NI opcodes.</li><li> DynASM/x86: Restrict shld/shrd to operands with same width.</li><li> DynASM/x86: Fix some SSE instruction templates.</li><li> Fix pairs() recording.</li><li> FFI: Fix ipairs() recording.</li><li> Drop marks from replayed instructions when sinking.</li></ul></li></ul></li></ul>See <a tiddlylink="ChangeLog1009003" refresh="link" target="_blank" title="External link to null#ChangeLog1009003" href="null#ChangeLog1009003" class="externalLink null">ChangeLog1009003</a> for change log for <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> 1.9.3.x.</description>
<link>null#ChangeLog1009007</link>
<pubDate>Fri, 25 Dec 2015 05:29:00 GMT</pubDate>
</item>
<item>
<title>Download</title>
<description><a tiddler="Download" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br>You can download the latest release tarball below. After that, you can follow the instructions on the <a tiddlylink="Installation" refresh="link" target="_blank" title="External link to null#Installation" href="null#Installation" class="externalLink null">Installation</a> page to build and install it.<br><h1>Releases</h1><h2> Lastest release</h2><ul><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz" class="externalLink">ngx_openresty-1.9.7.1.tar.gz</a> <span>&nbsp;</span> 3.4MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> (<a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.7.1-win32.zip" href="https://openresty.org/download/ngx_openresty-1.9.7.1-win32.zip" class="externalLink">Win32</a> <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.7.1-win32.zip.asc" href="https://openresty.org/download/ngx_openresty-1.9.7.1-win32.zip.asc" class="externalLink">PGP</a>) <span>&nbsp;</span> <a tiddlylink="ChangeLog1009007" refresh="link" target="_blank" title="External link to null#ChangeLog1009007" href="null#ChangeLog1009007" class="externalLink null">Changes</a> - 25 December 2015</li></ul><h2> Legacy releases</h2>Sometimes, users may want to download old releases.<br><ul><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz" href="https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz" class="externalLink">ngx_openresty-1.9.3.2.tar.gz</a> <span>&nbsp;</span> 3.4MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> (<a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.3.2-win32.zip" href="https://openresty.org/download/ngx_openresty-1.9.3.2-win32.zip" class="externalLink">Win32</a> <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.3.2-win32.zip.asc" href="https://openresty.org/download/ngx_openresty-1.9.3.2-win32.zip.asc" class="externalLink">PGP</a>) <span>&nbsp;</span> <a tiddlylink="ChangeLog1009003" refresh="link" target="_blank" title="External link to null#ChangeLog1009003" href="null#ChangeLog1009003" class="externalLink null">Changes</a> - 23 November 2015</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz" class="externalLink">ngx_openresty-1.9.3.1.tar.gz</a> <span>&nbsp;</span> 3.4MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1009003" refresh="link" target="_blank" title="External link to null#ChangeLog1009003" href="null#ChangeLog1009003" class="externalLink null">Changes</a> - 12 August 2015</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.10.2.tar.gz" href="https://openresty.org/download/ngx_openresty-1.7.10.2.tar.gz" class="externalLink">ngx_openresty-1.7.10.2.tar.gz</a> <span>&nbsp;</span> 3.3MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.10.2.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.7.10.2.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1007010" refresh="link" target="_blank" title="External link to null#ChangeLog1007010" href="null#ChangeLog1007010" class="externalLink null">Changes</a> - 3 July 2015</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz" class="externalLink">ngx_openresty-1.7.10.1.tar.gz</a> <span>&nbsp;</span> 3.2MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1007010" refresh="link" target="_blank" title="External link to null#ChangeLog1007010" href="null#ChangeLog1007010" class="externalLink null">Changes</a> - 28 February 2015</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz" href="https://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz" class="externalLink">ngx_openresty-1.7.7.2.tar.gz</a> <span>&nbsp;</span> 3.2MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1007007" refresh="link" target="_blank" title="External link to null#ChangeLog1007007" href="null#ChangeLog1007007" class="externalLink null">Changes</a> - 4 February 2015</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.7.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.7.7.1.tar.gz" class="externalLink">ngx_openresty-1.7.7.1.tar.gz</a> <span>&nbsp;</span> 3.2MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.7.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.7.7.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1007007" refresh="link" target="_blank" title="External link to null#ChangeLog1007007" href="null#ChangeLog1007007" class="externalLink null">Changes</a> - 6 December 2014</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.4.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.7.4.1.tar.gz" class="externalLink">ngx_openresty-1.7.4.1.tar.gz</a> <span>&nbsp;</span> 3.2MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.4.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.7.4.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1007004" refresh="link" target="_blank" title="External link to null#ChangeLog1007004" href="null#ChangeLog1007004" class="externalLink null">Changes</a> - 9 October 2014</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.2.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.7.2.1.tar.gz" class="externalLink">ngx_openresty-1.7.2.1.tar.gz</a> <span>&nbsp;</span> 3.2MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.2.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.7.2.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1007002" refresh="link" target="_blank" title="External link to null#ChangeLog1007002" href="null#ChangeLog1007002" class="externalLink null">Changes</a> - 12 July 2014</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.0.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.7.0.1.tar.gz" class="externalLink">ngx_openresty-1.7.0.1.tar.gz</a> <span>&nbsp;</span> 3.1MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.7.0.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.7.0.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1007000" refresh="link" target="_blank" title="External link to null#ChangeLog1007000" href="null#ChangeLog1007000" class="externalLink null">Changes</a> - 7 June 2014</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.5.12.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.5.12.1.tar.gz" class="externalLink">ngx_openresty-1.5.12.1.tar.gz</a> <span>&nbsp;</span> 3.1MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.5.12.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.5.12.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1005012" refresh="link" target="_blank" title="External link to null#ChangeLog1005012" href="null#ChangeLog1005012" class="externalLink null">Changes</a> - 29 April 2014</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.5.11.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.5.11.1.tar.gz" class="externalLink">ngx_openresty-1.5.11.1.tar.gz</a> <span>&nbsp;</span> 3.1MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.5.11.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.5.11.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1005011" refresh="link" target="_blank" title="External link to null#ChangeLog1005011" href="null#ChangeLog1005011" class="externalLink null">Changes</a> - 30 March 2014</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.5.8.1.tar.gz" href="https://openresty.org/download/ngx_openresty-1.5.8.1.tar.gz" class="externalLink">ngx_openresty-1.5.8.1.tar.gz</a> <span>&nbsp;</span> 3.1MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.5.8.1.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.5.8.1.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1005008" refresh="link" target="_blank" title="External link to null#ChangeLog1005008" href="null#ChangeLog1005008" class="externalLink null">Changes</a> - 10 January 2014</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz" href="https://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz" class="externalLink">ngx_openresty-1.4.3.6.tar.gz</a> <span>&nbsp;</span> 3.1MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1004003" refresh="link" target="_blank" title="External link to null#ChangeLog1004003" href="null#ChangeLog1004003" class="externalLink null">Changes</a> - 20 November 2013</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.4.3.4.tar.gz" href="https://openresty.org/download/ngx_openresty-1.4.3.4.tar.gz" class="externalLink">ngx_openresty-1.4.3.4.tar.gz</a> <span>&nbsp;</span> 3.1MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.4.3.4.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.4.3.4.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1004003" refresh="link" target="_blank" title="External link to null#ChangeLog1004003" href="null#ChangeLog1004003" class="externalLink null">Changes</a> - 12 November 2013</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.4.2.8.tar.gz" href="https://openresty.org/download/ngx_openresty-1.4.2.8.tar.gz" class="externalLink">ngx_openresty-1.4.2.8.tar.gz</a> <span>&nbsp;</span> 3.0MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.4.2.8.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.4.2.8.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1004002" refresh="link" target="_blank" title="External link to null#ChangeLog1004002" href="null#ChangeLog1004002" class="externalLink null">Changes</a> - 22 September 2013</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.8.6.tar.gz" href="https://openresty.org/download/ngx_openresty-1.2.8.6.tar.gz" class="externalLink">ngx_openresty-1.2.8.6.tar.gz</a> <span>&nbsp;</span> 2.9MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.8.6.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.2.8.6.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1002008" refresh="link" target="_blank" title="External link to null#ChangeLog1002008" href="null#ChangeLog1002008" class="externalLink null">Changes</a> - 10 June 2013</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.7.8.tar.gz" href="https://openresty.org/download/ngx_openresty-1.2.7.8.tar.gz" class="externalLink">ngx_openresty-1.2.7.8.tar.gz</a> <span>&nbsp;</span> 2.9MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.7.8.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.2.7.8.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1002007" refresh="link" target="_blank" title="External link to null#ChangeLog1002007" href="null#ChangeLog1002007" class="externalLink null">Changes</a> - 13 May 2013</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.7.6.tar.gz" href="https://openresty.org/download/ngx_openresty-1.2.7.6.tar.gz" class="externalLink">ngx_openresty-1.2.7.6.tar.gz</a> <span>&nbsp;</span> 2.9MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.7.6.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.2.7.6.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1002007" refresh="link" target="_blank" title="External link to null#ChangeLog1002007" href="null#ChangeLog1002007" class="externalLink null">Changes</a> - 17 April 2013</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.6.6.tar.gz" href="https://openresty.org/download/ngx_openresty-1.2.6.6.tar.gz" class="externalLink">ngx_openresty-1.2.6.6.tar.gz</a> <span>&nbsp;</span> 2.9MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.6.6.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.2.6.6.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1002006" refresh="link" target="_blank" title="External link to null#ChangeLog1002006" href="null#ChangeLog1002006" class="externalLink null">Changes</a> - 17 February 2013</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.4.14.tar.gz" href="https://openresty.org/download/ngx_openresty-1.2.4.14.tar.gz" class="externalLink">ngx_openresty-1.2.4.14.tar.gz</a> <span>&nbsp;</span> 2.9MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.4.14.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.2.4.14.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1002004" refresh="link" target="_blank" title="External link to null#ChangeLog1002004" href="null#ChangeLog1002004" class="externalLink null">Changes</a> - 23 December 2012</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.3.8.tar.gz" href="https://openresty.org/download/ngx_openresty-1.2.3.8.tar.gz" class="externalLink">ngx_openresty-1.2.3.8.tar.gz</a> <span>&nbsp;</span> 2.9MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.3.8.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.2.3.8.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1002003" refresh="link" target="_blank" title="External link to null#ChangeLog1002003" href="null#ChangeLog1002003" class="externalLink null">Changes</a> - 8 October 2012</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.1.14.tar.gz" href="https://openresty.org/download/ngx_openresty-1.2.1.14.tar.gz" class="externalLink">ngx_openresty-1.2.1.14.tar.gz</a> <span>&nbsp;</span> 2.9MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.2.1.14.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.2.1.14.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1002001" refresh="link" target="_blank" title="External link to null#ChangeLog1002001" href="null#ChangeLog1002001" class="externalLink null">Changes</a> - 14 August 2012</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.15.10.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.15.10.tar.gz" class="externalLink">ngx_openresty-1.0.15.10.tar.gz</a> <span>&nbsp;</span> 2.7MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.15.10.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.15.10.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000015" refresh="link" target="_blank" title="External link to null#ChangeLog1000015" href="null#ChangeLog1000015" class="externalLink null">Changes</a> - 13 June 2012</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.11.28.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.11.28.tar.gz" class="externalLink">ngx_openresty-1.0.11.28.tar.gz</a> <span>&nbsp;</span> 2.7MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.11.28.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.11.28.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000011" refresh="link" target="_blank" title="External link to null#ChangeLog1000011" href="null#ChangeLog1000011" class="externalLink null">Changes</a> - 25 March 2012</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.10.48.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.10.48.tar.gz" class="externalLink">ngx_openresty-1.0.10.48.tar.gz</a> <span>&nbsp;</span> 2.6MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.10.48.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.10.48.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000010" refresh="link" target="_blank" title="External link to null#ChangeLog1000010" href="null#ChangeLog1000010" class="externalLink null">Changes</a> - 1 February 2012</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.10.44.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.10.44.tar.gz" class="externalLink">ngx_openresty-1.0.10.44.tar.gz</a> <span>&nbsp;</span> 2.5MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.10.44.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.10.44.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000010" refresh="link" target="_blank" title="External link to null#ChangeLog1000010" href="null#ChangeLog1000010" class="externalLink null">Changes</a> - 16 January 2012</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.10.24.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.10.24.tar.gz" class="externalLink">ngx_openresty-1.0.10.24.tar.gz</a> <span>&nbsp;</span> 2.5MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.10.24.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.10.24.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000010" refresh="link" target="_blank" title="External link to null#ChangeLog1000010" href="null#ChangeLog1000010" class="externalLink null">Changes</a> - 11 December 2011</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.9.10.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.9.10.tar.gz" class="externalLink">ngx_openresty-1.0.9.10.tar.gz</a> <span>&nbsp;</span> 2.5MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.9.10.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.9.10.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000009" refresh="link" target="_blank" title="External link to null#ChangeLog1000009" href="null#ChangeLog1000009" class="externalLink null">Changes</a> - 16 November 2011</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.8.26.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.8.26.tar.gz" class="externalLink">ngx_openresty-1.0.8.26.tar.gz</a> <span>&nbsp;</span> 2.5MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.8.26.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.8.26.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000008" refresh="link" target="_blank" title="External link to null#ChangeLog1000008" href="null#ChangeLog1000008" class="externalLink null">Changes</a> - 3 November 2011</li><li> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.6.22.tar.gz" href="https://openresty.org/download/ngx_openresty-1.0.6.22.tar.gz" class="externalLink">ngx_openresty-1.0.6.22.tar.gz</a> <span>&nbsp;</span> 2.4MB <span>&nbsp;</span> <a target="_blank" title="External link to https://openresty.org/download/ngx_openresty-1.0.6.22.tar.gz.asc" href="https://openresty.org/download/ngx_openresty-1.0.6.22.tar.gz.asc" class="externalLink">PGP</a> <span>&nbsp;</span> <a tiddlylink="ChangeLog1000006" refresh="link" target="_blank" title="External link to null#ChangeLog1000006" href="null#ChangeLog1000006" class="externalLink null">Changes</a> - 7 October 2011</li></ul><br>See <a tiddlylink="Installation" refresh="link" target="_blank" title="External link to null#Installation" href="null#Installation" class="externalLink null">Installation</a> for installation instructions.<br></description>
<category>Resources</category>
<link>null#Download</link>
<pubDate>Thu, 24 Dec 2015 21:30:00 GMT</pubDate>
</item>
<item>
<title>SiteSubtitle</title>
<description>Scalable Web Platform based on NGINX</description>
<category>admin</category>
<link>null#SiteSubtitle</link>
<pubDate>Thu, 24 Dec 2015 20:34:00 GMT</pubDate>
</item>
<item>
<title>OpenResty</title>
<description><a tiddler="OpenResty" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><br>OpenResty (aka. ngx_openresty) is a full-fledged web platform by bundling the standard <a tiddlylink="Nginx" refresh="link" target="_blank" title="External link to null#Nginx" href="null#Nginx" class="externalLink null">Nginx</a> core, <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a>, lots of high quality Lua libraries, lots of high quality <a tiddlylink="Components" refresh="link" target="_blank" title="External link to null#Components" href="null#Components" class="externalLink null">3rd-party Nginx modules</a>, as well as most of their external dependencies.<br><br>By taking advantage of various well-designed Nginx modules, OpenResty effectively turns the nginx server into a powerful web app server, in which the web developers can use the Lua programming language to script various existing nginx C modules and Lua modules and construct extremely high-performance web applications that are capable to handle 10K+ connections.<br><br>OpenResty aims to run your server-side web app completely in the Nginx server, leveraging Nginx's event model to do non-blocking I/O not only with the HTTP clients, but also with remote backends like MySQL, PostgreSQL, Memcached, and Redis.<br><br>OpenResty is <em>not</em> an Nginx fork. It is just a software bundle. Most of the patches applied to the Nginx core in OpenResty have already been submitted to the official Nginx team and most of the patches submitted have also been accepted. We are trying hard <em>not</em> to fork Nginx and always to use the latest best Nginx core from the official Nginx team.<br><br>See <a tiddlylink="Components" refresh="link" target="_blank" title="External link to null#Components" href="null#Components" class="externalLink null">Components</a> for the complete list of software bundled in OpenResty.<br><br>See <a tiddlylink="GettingStarted" refresh="link" target="_blank" title="External link to null#GettingStarted" href="null#GettingStarted" class="externalLink null">GettingStarted</a> on how to quickly setup an OpenResty server that can say hello world over HTTP. Or you can go to the <a tiddlylink="Download" refresh="link" target="_blank" title="External link to null#Download" href="null#Download" class="externalLink null">Download</a> section to grab OpenResty's source code tarball directly.<br><br>We provide free technical support in the openresty and openresty-en mailing lists. See <a tiddlylink="Community" refresh="link" target="_blank" title="External link to null#Community" href="null#Community" class="externalLink null">Community</a>.</description>
<link>null#OpenResty</link>
<pubDate>Thu, 24 Dec 2015 20:33:00 GMT</pubDate>
</item>
<item>
<title>Installation</title>
<description><a tiddler="Installation" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br>If you haven't downloaded the <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> source code tarball, please go to the <a tiddlylink="Download" refresh="link" target="_blank" title="External link to null#Download" href="null#Download" class="externalLink null">Download</a> page first.<br><br>Basically, building and installing <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> is as simple as<br><pre>tar xvf ngx_openresty-VERSION.tar.gz
cd ngx_openresty-VERSION/
./configure
make
make install
</pre>where <code>VERSION</code> should be replaced by a concrete version number of <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>, like <code>0.8.54.6</code>.<br><br>If your system environment is modern enough, then you almost always want to enable the PCRE JIT support and IPv6 support in your NGINX by passing the <code>--with-pcre-jit</code> and <code>--with-ipv6</code> options to the <code>./configure</code> script.<br><br>If you have problems while building or want finer control over the building process, please read on.<br><h1>Prerequisites</h1>You should have <code>perl 5.6.1+</code>, <code>libreadline</code>, <code>libpcre</code>, <code>libssl</code> installed into your system. For Linux, you should also ensure that <code>ldconfig</code> is in your PATH environment.<br><h2>Debian and Ubuntu users</h2>You're recommended to install the following packages using apt-get:<br><pre>apt-get install libreadline-dev libncurses5-dev libpcre3-dev \
libssl-dev perl make build-essential
</pre><h2>Fedora and RedHat users</h2>You're recommended to install the following packages using yum:<br><pre>yum install readline-devel pcre-devel openssl-devel gcc
</pre><h2>Mac OS X (Darwin) users</h2>You're recommended to install prerequisites PCRE using some package management tool, like <a target="_blank" title="External link to http://mxcl.github.com/homebrew/" href="http://mxcl.github.com/homebrew/" class="externalLink">Homebrew</a>:<br><pre>brew install pcre openssl
</pre>Alternatively you can install PCRE from source all by yourself :)<br><br>After installing PCRE, you may need to specify the paths for PCRE's headers and libraries to your C compiler and linker, for example,<br><pre>$ ./configure \
--with-cc-opt="-I/usr/local/include" \
--with-ld-opt="-L/usr/local/lib" \
...
</pre>assuming that your PCRE and <a tiddlylink="OpenSSL" refresh="link" target="_blank" title="External link to null#OpenSSL" href="null#OpenSSL" class="externalLink null">OpenSSL</a> are installed under the prefix <code>/usr/local/</code>.<br><br>See also <a target="_blank" title="External link to https://github.com/agentzh/ngx_openresty/issues/3" href="https://github.com/agentzh/ngx_openresty/issues/3" class="externalLink">Issue #3</a>.<br><br><h2>FreeBSD users</h2>You need to install the following ports:<br><ul><li> devel/gmake</li><li> security/openssl</li><li> devel/pcre</li></ul><h2>Solaris 11 users</h2>You need to install the following packages from the official repository:<br><ul><li> gcc-3</li><li> SUNWlibm</li></ul>Usually it's just as simple as<br><pre>pfexec pkg install gcc-3 SUNWlibm
</pre><h1>Build OpenResty</h1><h2>Download</h2>download the latest ngx_openresty tarball can be fetched from the <a tiddlylink="Download" refresh="link" target="_blank" title="External link to null#Download" href="null#Download" class="externalLink null">Download</a> page and unpack it like this:<br><pre>tar xzvf ngx_openresty-VERSION.tar.gz
</pre>where <code>VERSION</code> should be replaced by real version numbers like <code>0.8.54.6</code>.<br><h2>./configure</h2>Then enter the <code>ngx_openresty-VERSION/</code> directory, and type the following command to configure:<br><pre>./configure
</pre>By default, <code>--prefix=/usr/local/openresty</code> is assumed. You should only disable <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> 2 when your platform does not support <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a>.<br><br>You can specify various options, as in<br><pre>./configure --prefix=/opt/openresty \
--with-pcre-jit \
--with-ipv6 \
--without-http_redis2_module \
--with-http_iconv_module \
--with-http_postgres_module \
-j2
</pre>All of the standard Nginx configure file options can be used here, including <code>--add-module=PATH</code> for adding your own 3rd-party Nginx C modules. Try <code>./configure --help</code> to see more options available.<br><br>Errors in running the ./configure script can be found in the file <code>build/nginx-VERSION/objs/autoconf.err</code> where <code>VERSION</code> should be replaced by a concrete version number of <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>, like <code>0.8.54.6</code>.<br><h3>Notes for Solaris users</h3>For Solaris, it's common to install libraries like OpenSSL to <code>/lib</code>, so when it complaints about missing OpenSSL and you have indeed already installed it, specify the <code>--with-ld-opt='-L/lib'</code> option.<br><h2>make</h2>Now you can compile everything up using the command<br><pre>make
</pre>If your machine has multiple cores and your <code>make</code> supports the jobserver feature, you can compile things in parallel like this:<br><pre>make -j2
</pre>assuming you have 2 CPU cores.<br><h2>make install</h2>If all the previous steps go without problems, you can install <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> into your system by typing the command<br><pre>make install
</pre>On Linux, it often requires <code>sudo</code> to gain root access.<br></description>
<category>doc</category>
<category>install</category>
<link>null#Installation</link>
<pubDate>Thu, 24 Dec 2015 18:00:00 GMT</pubDate>
</item>
<item>
<title>MainMenu</title>
<description><a tiddlylink="About" refresh="link" target="_blank" title="External link to null#About" href="null#About" class="externalLink null">About</a><br><a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">Overview</a><br><a tiddlylink="Benchmark" refresh="link" target="_blank" title="External link to null#Benchmark" href="null#Benchmark" class="externalLink null">Benchmark</a><br><a tiddlylink="Changes" refresh="link" target="_blank" title="External link to null#Changes" href="null#Changes" class="externalLink null">Changes</a><br><a tiddlylink="Community" refresh="link" target="_blank" title="External link to null#Community" href="null#Community" class="externalLink null">Community</a><br><a tiddlylink="Components" refresh="link" target="_blank" title="External link to null#Components" href="null#Components" class="externalLink null">Components</a><br><a tiddlylink="ContactUs" refresh="link" target="_blank" title="External link to null#ContactUs" href="null#ContactUs" class="externalLink null">Contact us</a><br><a tiddlylink="Debugging" refresh="link" target="_blank" title="External link to null#Debugging" href="null#Debugging" class="externalLink null">Debugging</a><br><a tiddlylink="DonateOnline" refresh="link" target="_blank" title="External link to null#DonateOnline" href="null#DonateOnline" class="externalLink null">Donate Online</a><br><a tiddlylink="Donors" refresh="link" target="_blank" title="External link to null#Donors" href="null#Donors" class="externalLink null">Donors</a><br><a tiddlylink="Download" refresh="link" target="_blank" title="External link to null#Download" href="null#Download" class="externalLink null">Download</a><br><a tiddlylink="eBooks" refresh="link" target="_blank" title="External link to null#eBooks" href="null#eBooks" class="externalLink null">eBooks</a><br><a tiddlylink="GettingInvolved" refresh="link" target="_blank" title="External link to null#GettingInvolved" href="null#GettingInvolved" class="externalLink null">Getting Involved</a><br><a tiddlylink="GettingStarted" refresh="link" target="_blank" title="External link to null#GettingStarted" href="null#GettingStarted" class="externalLink null">Getting Started</a><br><a tiddlylink="Installation" refresh="link" target="_blank" title="External link to null#Installation" href="null#Installation" class="externalLink null">Installation</a><br><a tiddlylink="Presentations" refresh="link" target="_blank" title="External link to null#Presentations" href="null#Presentations" class="externalLink null">Presentations</a><br><a tiddlylink="Profiling" refresh="link" target="_blank" title="External link to null#Profiling" href="null#Profiling" class="externalLink null">Profiling</a><br><a tiddlylink="QualityAssurance" refresh="link" target="_blank" title="External link to null#QualityAssurance" href="null#QualityAssurance" class="externalLink null">Quality Assurance</a><br><a tiddlylink="Resources" refresh="link" target="_blank" title="External link to null#Resources" href="null#Resources" class="externalLink null">Resources</a><br><a tiddlylink="Samples" refresh="link" target="_blank" title="External link to null#Samples" href="null#Samples" class="externalLink null">Samples</a><br><a tiddlylink="Upgrading" refresh="link" target="_blank" title="External link to null#Upgrading" href="null#Upgrading" class="externalLink null">Upgrading</a><br><a target="_blank" title="External link to https://openresty.org/survey/" href="https://openresty.org/survey/" class="externalLink">User Survey</a><br><a target="_blank" title="External link to cn/" href="cn/" class="externalLink">中文维基</a><br><br><img src="feed-icon-14x14.png"> <a tiddlylink="RSSFeed" refresh="link" target="_blank" title="External link to null#RSSFeed" href="null#RSSFeed" class="externalLink null">RSS feed</a><br><br><span>
<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input name="cmd" value="_xclick" type="hidden">
<input name="business" value="[email protected]" type="hidden">
<input name="item_name" value="OpenResty Donation (in USD)" type="hidden">
<input name="currency_code" value="USD" type="hidden">
<input name="amount" value="" type="hidden">
<input src="donate_button_paypal_01.gif" name="submit" alt="Donate with PayPal" border="0" type="image">
</form>
</span><br><span>
<form name="atool_alipay_img_form" style="padding-bottom: 0;border:none;" method="post" action="https://shenghuo.alipay.com/send/payment/fill.htm" target="_blank" accept-charset="GBK" onsubmit="document.charset='gbk';"><input value="[email protected]" name="optEmail" type="hidden"><input value="" name="payAmount" type="hidden"><input name="title" placeholder="付款说明" value="给 OpenResty 捐款" type="hidden"><input value="支付宝收款" src="donate-with-alipay.png" name="pay" type="image"></form>
</span><br></description>
<category>admin</category>
<link>null#MainMenu</link>
<pubDate>Mon, 21 Dec 2015 00:36:00 GMT</pubDate>
</item>
<item>
<title>Changes</title>
<description><a tiddler="Changes" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><ul><li> <a tiddlylink="ChangeLog1009007" refresh="link" target="_blank" title="External link to null#ChangeLog1009007" href="null#ChangeLog1009007" class="externalLink null">Release 1.9.7.x</a></li><li> <a tiddlylink="ChangeLog1009003" refresh="link" target="_blank" title="External link to null#ChangeLog1009003" href="null#ChangeLog1009003" class="externalLink null">Release 1.9.3.x</a></li><li> <a tiddlylink="ChangeLog1007010" refresh="link" target="_blank" title="External link to null#ChangeLog1007010" href="null#ChangeLog1007010" class="externalLink null">Release 1.7.10.x</a></li><li> <a tiddlylink="ChangeLog1007007" refresh="link" target="_blank" title="External link to null#ChangeLog1007007" href="null#ChangeLog1007007" class="externalLink null">Release 1.7.7.x</a></li><li> <a tiddlylink="ChangeLog1007004" refresh="link" target="_blank" title="External link to null#ChangeLog1007004" href="null#ChangeLog1007004" class="externalLink null">Release 1.7.4.x</a></li><li> <a tiddlylink="ChangeLog1007002" refresh="link" target="_blank" title="External link to null#ChangeLog1007002" href="null#ChangeLog1007002" class="externalLink null">Release 1.7.2.x</a></li><li> <a tiddlylink="ChangeLog1007000" refresh="link" target="_blank" title="External link to null#ChangeLog1007000" href="null#ChangeLog1007000" class="externalLink null">Release 1.7.0.x</a></li><li> <a tiddlylink="ChangeLog1005012" refresh="link" target="_blank" title="External link to null#ChangeLog1005012" href="null#ChangeLog1005012" class="externalLink null">Release 1.5.12.x</a></li><li> <a tiddlylink="ChangeLog1005011" refresh="link" target="_blank" title="External link to null#ChangeLog1005011" href="null#ChangeLog1005011" class="externalLink null">Release 1.5.11.x</a></li><li> <a tiddlylink="ChangeLog1005008" refresh="link" target="_blank" title="External link to null#ChangeLog1005008" href="null#ChangeLog1005008" class="externalLink null">Release 1.5.8.x</a></li><li> <a tiddlylink="ChangeLog1004003" refresh="link" target="_blank" title="External link to null#ChangeLog1004003" href="null#ChangeLog1004003" class="externalLink null">Release 1.4.3.x</a></li><li> <a tiddlylink="ChangeLog1004002" refresh="link" target="_blank" title="External link to null#ChangeLog1004002" href="null#ChangeLog1004002" class="externalLink null">Release 1.4.2.x</a></li><li> <a tiddlylink="ChangeLog1004001" refresh="link" target="_blank" title="External link to null#ChangeLog1004001" href="null#ChangeLog1004001" class="externalLink null">Release 1.4.1.x</a></li><li> <a tiddlylink="ChangeLog1002008" refresh="link" target="_blank" title="External link to null#ChangeLog1002008" href="null#ChangeLog1002008" class="externalLink null">Release 1.2.8.x</a></li><li> <a tiddlylink="ChangeLog1002007" refresh="link" target="_blank" title="External link to null#ChangeLog1002007" href="null#ChangeLog1002007" class="externalLink null">Release 1.2.7.x</a></li><li> <a tiddlylink="ChangeLog1002006" refresh="link" target="_blank" title="External link to null#ChangeLog1002006" href="null#ChangeLog1002006" class="externalLink null">Release 1.2.6.x</a></li><li> <a tiddlylink="ChangeLog1002004" refresh="link" target="_blank" title="External link to null#ChangeLog1002004" href="null#ChangeLog1002004" class="externalLink null">Release 1.2.4.x</a></li><li> <a tiddlylink="ChangeLog1002003" refresh="link" target="_blank" title="External link to null#ChangeLog1002003" href="null#ChangeLog1002003" class="externalLink null">Release 1.2.3.x</a></li><li> <a tiddlylink="ChangeLog1002001" refresh="link" target="_blank" title="External link to null#ChangeLog1002001" href="null#ChangeLog1002001" class="externalLink null">Release 1.2.1.x</a></li><li> <a tiddlylink="ChangeLog1000015" refresh="link" target="_blank" title="External link to null#ChangeLog1000015" href="null#ChangeLog1000015" class="externalLink null">Release 1.0.15.x</a></li><li> <a tiddlylink="ChangeLog1000011" refresh="link" target="_blank" title="External link to null#ChangeLog1000011" href="null#ChangeLog1000011" class="externalLink null">Release 1.0.11.x</a></li><li> <a tiddlylink="ChangeLog1000010" refresh="link" target="_blank" title="External link to null#ChangeLog1000010" href="null#ChangeLog1000010" class="externalLink null">Release 1.0.10.x</a></li><li> <a tiddlylink="ChangeLog1000009" refresh="link" target="_blank" title="External link to null#ChangeLog1000009" href="null#ChangeLog1000009" class="externalLink null">Release 1.0.9.x</a></li><li> <a tiddlylink="ChangeLog1000008" refresh="link" target="_blank" title="External link to null#ChangeLog1000008" href="null#ChangeLog1000008" class="externalLink null">Release 1.0.8.x</a></li><li> <a tiddlylink="ChangeLog1000006" refresh="link" target="_blank" title="External link to null#ChangeLog1000006" href="null#ChangeLog1000006" class="externalLink null">Release 1.0.6.x</a></li><li> <a tiddlylink="ChangeLog1000005" refresh="link" target="_blank" title="External link to null#ChangeLog1000005" href="null#ChangeLog1000005" class="externalLink null">Release 1.0.5.x</a></li><li> <a tiddlylink="ChangeLog1000004" refresh="link" target="_blank" title="External link to null#ChangeLog1000004" href="null#ChangeLog1000004" class="externalLink null">Release 1.0.4.x</a></li><li> <a tiddlylink="ChangeLog8054" refresh="link" target="_blank" title="External link to null#ChangeLog8054" href="null#ChangeLog8054" class="externalLink null">Release 0.8.54.x</a></li></ul></description>
<link>null#Changes</link>
<pubDate>Sun, 20 Dec 2015 05:57:00 GMT</pubDate>
</item>
<item>
<title>Components</title>
<description><a tiddler="Components" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><br>Below lists all the components bundled in <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>. All of the components can be enabled or disabled on need.<br><br>Most of the components are enabled by default, some are not.<br><br>The standard Lua 5.1 interpreter, <a tiddlylink="DrizzleNginxModule" refresh="link" target="_blank" title="External link to null#DrizzleNginxModule" href="null#DrizzleNginxModule" class="externalLink null">DrizzleNginxModule</a>, <a tiddlylink="PostgresNginxModule" refresh="link" target="_blank" title="External link to null#PostgresNginxModule" href="null#PostgresNginxModule" class="externalLink null">PostgresNginxModule</a>, and <a tiddlylink="IconvNginxModule" refresh="link" target="_blank" title="External link to null#IconvNginxModule" href="null#IconvNginxModule" class="externalLink null">IconvNginxModule</a> are not enabled by default. You need to specify the <code>--with-lua51</code>, <code>--with-http_drizzle_module</code>, <code>--with-http_postgres_module</code>, and <code>--with-http_iconv_module</code> options, respectively, to enable them while <a tiddlylink="Installation" refresh="link" target="_blank" title="External link to null#Installation" href="null#Installation" class="externalLink null">building OpenResty</a>.<br><br>Before the 1.5.8.1 release, the standard Lua 5.1 interpreter is enabled by default while <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> 2.x is not. So for earlier releases, you need to explicitly specify the <code>--with-luajit</code> option (which is the default for 1.5.8.1+) to use <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> 2.x.<br><br><ul><li> <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a></li><li> <a tiddlylink="ArrayVarNginxModule" refresh="link" target="_blank" title="External link to null#ArrayVarNginxModule" href="null#ArrayVarNginxModule" class="externalLink null">ArrayVarNginxModule</a></li><li> <a tiddlylink="AuthRequestNginxModule" refresh="link" target="_blank" title="External link to null#AuthRequestNginxModule" href="null#AuthRequestNginxModule" class="externalLink null">AuthRequestNginxModule</a></li><li> <a tiddlylink="CoolkitNginxModule" refresh="link" target="_blank" title="External link to null#CoolkitNginxModule" href="null#CoolkitNginxModule" class="externalLink null">CoolkitNginxModule</a></li><li> <a tiddlylink="DrizzleNginxModule" refresh="link" target="_blank" title="External link to null#DrizzleNginxModule" href="null#DrizzleNginxModule" class="externalLink null">DrizzleNginxModule</a></li><li> <a tiddlylink="EchoNginxModule" refresh="link" target="_blank" title="External link to null#EchoNginxModule" href="null#EchoNginxModule" class="externalLink null">EchoNginxModule</a></li><li> <a tiddlylink="EncryptedSessionNginxModule" refresh="link" target="_blank" title="External link to null#EncryptedSessionNginxModule" href="null#EncryptedSessionNginxModule" class="externalLink null">EncryptedSessionNginxModule</a></li><li> <a tiddlylink="FormInputNginxModule" refresh="link" target="_blank" title="External link to null#FormInputNginxModule" href="null#FormInputNginxModule" class="externalLink null">FormInputNginxModule</a></li><li> <a tiddlylink="HeadersMoreNginxModule" refresh="link" target="_blank" title="External link to null#HeadersMoreNginxModule" href="null#HeadersMoreNginxModule" class="externalLink null">HeadersMoreNginxModule</a></li><li> <a tiddlylink="IconvNginxModule" refresh="link" target="_blank" title="External link to null#IconvNginxModule" href="null#IconvNginxModule" class="externalLink null">IconvNginxModule</a></li><li> <a tiddlylink="StandardLuaInterpreter" refresh="link" target="_blank" title="External link to null#StandardLuaInterpreter" href="null#StandardLuaInterpreter" class="externalLink null">StandardLuaInterpreter</a></li><li> <a tiddlylink="MemcNginxModule" refresh="link" target="_blank" title="External link to null#MemcNginxModule" href="null#MemcNginxModule" class="externalLink null">MemcNginxModule</a></li><li> <a tiddlylink="Nginx" refresh="link" target="_blank" title="External link to null#Nginx" href="null#Nginx" class="externalLink null">Nginx</a></li><li> <a tiddlylink="NginxDevelKit" refresh="link" target="_blank" title="External link to null#NginxDevelKit" href="null#NginxDevelKit" class="externalLink null">NginxDevelKit</a></li><li> <a tiddlylink="LuaCjsonLibrary" refresh="link" target="_blank" title="External link to null#LuaCjsonLibrary" href="null#LuaCjsonLibrary" class="externalLink null">LuaCjsonLibrary</a></li><li> <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a></li><li> <a tiddlylink="LuaRdsParserLibrary" refresh="link" target="_blank" title="External link to null#LuaRdsParserLibrary" href="null#LuaRdsParserLibrary" class="externalLink null">LuaRdsParserLibrary</a></li><li> <a tiddlylink="LuaRedisParserLibrary" refresh="link" target="_blank" title="External link to null#LuaRedisParserLibrary" href="null#LuaRedisParserLibrary" class="externalLink null">LuaRedisParserLibrary</a></li><li> <a tiddlylink="LuaRestyCoreLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyCoreLibrary" href="null#LuaRestyCoreLibrary" class="externalLink null">LuaRestyCoreLibrary</a></li><li> <a tiddlylink="LuaRestyDNSLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyDNSLibrary" href="null#LuaRestyDNSLibrary" class="externalLink null">LuaRestyDNSLibrary</a></li><li> <a tiddlylink="LuaRestyLockLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyLockLibrary" href="null#LuaRestyLockLibrary" class="externalLink null">LuaRestyLockLibrary</a></li><li> <a tiddlylink="LuaRestyLrucacheLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyLrucacheLibrary" href="null#LuaRestyLrucacheLibrary" class="externalLink null">LuaRestyLrucacheLibrary</a></li><li> <a tiddlylink="LuaRestyMemcachedLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyMemcachedLibrary" href="null#LuaRestyMemcachedLibrary" class="externalLink null">LuaRestyMemcachedLibrary</a></li><li> <a tiddlylink="LuaRestyMySQLLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyMySQLLibrary" href="null#LuaRestyMySQLLibrary" class="externalLink null">LuaRestyMySQLLibrary</a></li><li> <a tiddlylink="LuaRestyRedisLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyRedisLibrary" href="null#LuaRestyRedisLibrary" class="externalLink null">LuaRestyRedisLibrary</a></li><li> <a tiddlylink="LuaRestyStringLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyStringLibrary" href="null#LuaRestyStringLibrary" class="externalLink null">LuaRestyStringLibrary</a></li><li> <a tiddlylink="LuaRestyUploadLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyUploadLibrary" href="null#LuaRestyUploadLibrary" class="externalLink null">LuaRestyUploadLibrary</a></li><li> <a tiddlylink="LuaRestyUpstreamHealthcheckLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyUpstreamHealthcheckLibrary" href="null#LuaRestyUpstreamHealthcheckLibrary" class="externalLink null">LuaRestyUpstreamHealthcheckLibrary</a></li><li> <a tiddlylink="LuaRestyWebSocketLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyWebSocketLibrary" href="null#LuaRestyWebSocketLibrary" class="externalLink null">LuaRestyWebSocketLibrary</a></li><li> <a tiddlylink="LuaUpstreamNginxModule" refresh="link" target="_blank" title="External link to null#LuaUpstreamNginxModule" href="null#LuaUpstreamNginxModule" class="externalLink null">LuaUpstreamNginxModule</a></li><li> <a tiddlylink="PostgresNginxModule" refresh="link" target="_blank" title="External link to null#PostgresNginxModule" href="null#PostgresNginxModule" class="externalLink null">PostgresNginxModule</a></li><li> <a tiddlylink="RdsCsvNginxModule" refresh="link" target="_blank" title="External link to null#RdsCsvNginxModule" href="null#RdsCsvNginxModule" class="externalLink null">RdsCsvNginxModule</a></li><li> <a tiddlylink="RdsJsonNginxModule" refresh="link" target="_blank" title="External link to null#RdsJsonNginxModule" href="null#RdsJsonNginxModule" class="externalLink null">RdsJsonNginxModule</a></li><li> <a tiddlylink="RedisNginxModule" refresh="link" target="_blank" title="External link to null#RedisNginxModule" href="null#RedisNginxModule" class="externalLink null">RedisNginxModule</a></li><li> <a tiddlylink="Redis2NginxModule" refresh="link" target="_blank" title="External link to null#Redis2NginxModule" href="null#Redis2NginxModule" class="externalLink null">Redis2NginxModule</a></li><li> <a tiddlylink="RestyCLI" refresh="link" target="_blank" title="External link to null#RestyCLI" href="null#RestyCLI" class="externalLink null">RestyCLI</a></li><li> <a tiddlylink="SetMiscNginxModule" refresh="link" target="_blank" title="External link to null#SetMiscNginxModule" href="null#SetMiscNginxModule" class="externalLink null">SetMiscNginxModule</a></li><li> <a tiddlylink="SrcacheNginxModule" refresh="link" target="_blank" title="External link to null#SrcacheNginxModule" href="null#SrcacheNginxModule" class="externalLink null">SrcacheNginxModule</a></li><li> <a tiddlylink="XssNginxModule" refresh="link" target="_blank" title="External link to null#XssNginxModule" href="null#XssNginxModule" class="externalLink null">XssNginxModule</a></li></ul></description>
<link>null#Components</link>
<pubDate>Mon, 23 Nov 2015 13:15:00 GMT</pubDate>
</item>
<item>
<title>ChangeLog1009003</title>
<description><a tiddler="ChangeLog1009003" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><h1> Version 1.9.3.2 - 23 November 2015</h1><ul><li> feature: added support for compiling on Windows using the MinGW gcc toolchain to the build system. See the document for more details: <a target="_blank" title="External link to https://github.com/openresty/ngx_openresty/blob/master/doc/README-win32.md" href="https://github.com/openresty/ngx_openresty/blob/master/doc/README-win32.md" class="externalLink">https://github.com/openresty/ngx_openresty/blob/master/doc/README-win32.md</a></li><li> upgraded <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> to 0.9.19.<ul><li> feature: implemented <code>*_by_lua_block {} </code> directives for all the existing <code>*_by_lua</code> directives so that we no longer have to escape special characters while inlining Lua source inside the <code>nginx.conf</code> file.</li><li> feature: now we support <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> 2 on Windows (in the form of <code>lua51.dll</code>).</li><li> feature: initial fixes when being used with the new <code>ngx_http_v2</code> module since nginx 1.9.5. thanks itpp16 for the patches.</li><li> bugfix: fixed errors and warnings with C compilers without variadic macro support.</li><li> bugfix: subrequest response status codes between the range 100 .. 299 (inclusive) might get lost in the return values of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxlocationcapture" href="https://github.com/openresty/lua-nginx-module#ngxlocationcapture" class="externalLink">ngx.location.capture*()</a> calls. thanks Igor Clark for the report.</li><li> bugfix: we might return the wrong shm zone in the public C API function <code>ngx_http_lua_find_zone()</code>. thanks qlee001 for the report.</li><li> bugfix: the user specified <code>./configure</code>'s <code>--with-cc-opt</code> and <code>--with-ld-opt</code> might override the <code>LUAJIT_INC</code>/<code>LUAJIT_LIB</code> and <code>LUA_INC</code>/<code>LUA_LIB</code> environment settings. thanks Julian Gonggrijp for the report.</li><li> bugfix: setting builtin request header <code>Upgrade</code> via <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqset_header" href="https://github.com/openresty/lua-nginx-module#ngxreqset_header" class="externalLink">ngx.req.set_header</a> and etc might not take effect with some builtin nginx modules.</li><li> bugfix: setting builtin request headers <code>Depth</code>, <code>Destination</code>, <code>Overwrite</code>, and <code>Date</code> via <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqset_header" href="https://github.com/openresty/lua-nginx-module#ngxreqset_header" class="externalLink">ngx.req.set_header()</a> and etc might not take effect at least with <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_dav_module.html" href="http://nginx.org/en/docs/http/ngx_http_dav_module.html" class="externalLink">ngx_http_dav_module</a>. thanks Igor Clark for the report.</li><li> bugfix: fixed typos due to copy&amp;paste mistakes in some error messages.</li><li> bugfix: fixed one <code>-Wmaybe-uninitialized</code> warning when compiling with <code>gcc -Os</code>.</li><li> bugfix: use of shared dicts resulted in (unwanted) registrations of shared dict metatables on <em>all</em> the lightuserdata in the Lua space. thanks helloyi for the report and patch.</li><li> bugfix: if a 3rd-party module calls <code>ngx_http_conf_get_module_srv_conf</code> to fetch its current <code>srv_conf</code> construct in its <code>merge_srv_conf</code> callback, then use of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_worker_by_lua" href="https://github.com/openresty/lua-nginx-module#init_worker_by_lua" class="externalLink">init_worker_by_lua</a> might lead to segmentation faults (the same also applied to merge_loc_conf). thanks chiyouhen for the report and patch.</li><li> bugfix: the <code>if_unmodified_since</code> "shortcut" field in <code>ngx_http_headers_in_t</code> was first added in nginx 0.9.2.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqclear_header" href="https://github.com/openresty/lua-nginx-module#ngxreqclear_header" class="externalLink">ngx.req.clear_header</a>/<a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqset_header" href="https://github.com/openresty/lua-nginx-module#ngxreqset_header" class="externalLink">ngx.req.set_header</a>: we did not update the shortcut fields in <code>ngx_http_headers_in_t</code> added since nginx 1.3.3 which may confuse other nginx modules accessing them.</li><li> bugfix: setting <code>Content-Type</code> response values including "; charset=xxx" via the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxheaderheader" href="https://github.com/openresty/lua-nginx-module#ngxheaderheader" class="externalLink">ngx.header</a> API might bypass the MIME type checks in other nginx modules like <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_gzip_module.html" href="http://nginx.org/en/docs/http/ngx_http_gzip_module.html" class="externalLink">ngx_gzip</a>. thanks Andreas Fischer for the report.</li><li> bugfix: typo fixes in some debug logging messages. thanks doujiang for the patch.</li><li> optimize: fixed the hash-table initial sizes of the cosocket metatables. thanks ops-dev-cn for the patch.</li><li> tests: removed the useless "use lib" directives from the Perl test files. thanks Markus Linnala for the report.</li><li> doc: various typo fixes from Lance Li.</li><li> doc: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxexit" href="https://github.com/openresty/lua-nginx-module#ngxexit" class="externalLink">ngx.exit</a> was not disabled within the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#header_filter_by_lua" href="https://github.com/openresty/lua-nginx-module#header_filter_by_lua" class="externalLink">header_filter_by_lua*</a> context.</li><li> doc: a code example misses a "return". thanks YuanSheng Wang for the patch.</li><li> doc: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxvarvariable" href="https://github.com/openresty/lua-nginx-module#ngxvarvariable" class="externalLink">ngx.var</a>: documented the values for undefined and uninitialized nginx variables. thanks Sean Johnson for asking.</li><li> doc: typo fix from Tatsuya Hoshino.</li></ul></li><li> upgraded <a tiddlylink="LuaUpstreamNginxModule" refresh="link" target="_blank" title="External link to null#LuaUpstreamNginxModule" href="null#LuaUpstreamNginxModule" class="externalLink null">LuaUpstreamNginxModule</a> to 0.04.<ul><li> feature: <code>upstream.get_servers(server_name)</code> now returns the server name (if any) as well, which can be the domain name if the user puts it in <code>nginx.conf</code>. thanks Hung Nguyen for the request.</li></ul></li><li> upgraded <a tiddlylink="HeadersMoreNginxModule" refresh="link" target="_blank" title="External link to null#HeadersMoreNginxModule" href="null#HeadersMoreNginxModule" class="externalLink null">HeadersMoreNginxModule</a> to 0.28.<ul><li> bugfix: fixed errors and warnings with C compilers without variadic macro support.</li><li> bugfix: setting (builtin) request headers <code>Upgrade</code>, <code>Depth</code>, <code>Destination</code>, <code>Overwrite</code>, and <code>Date</code> might not take effect in standard nginx modules like <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_proxy_module.html" href="http://nginx.org/en/docs/http/ngx_http_proxy_module.html" class="externalLink">ngx_http_proxy</a> and <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_dav_module.html" href="http://nginx.org/en/docs/http/ngx_http_dav_module.html" class="externalLink">ngx_http_dav</a>.</li><li> bugfix: when the response header <code>Content-Type</code> contains parameters like "; charset=utf-8", the <code>-t MIME-List</code> options did not work as expected at all. thanks Joseph Bartels for the report.</li><li> bugfix: clearing input headers <code>If-Unmodified-Since</code>, <code>If-Match</code>, and <code>If-None-Match</code> did not clear the builtin "shortcut" fields in <code>ngx_http_headers_in_t</code> which might confuse other nginx modules like <code>ngx_http_not_modified_filter_module</code>. The first header gets "shortcuts" fields since nginx 0.9.2 while the latter two since nginx 1.3.3.</li></ul></li><li> upgraded <a tiddlylink="IconvNginxModule" refresh="link" target="_blank" title="External link to null#IconvNginxModule" href="null#IconvNginxModule" class="externalLink null">IconvNginxModule</a> to 0.13.<ul><li> bugfix: HTTP 0.9 requests would turn <code>iconv_filter</code> into a bad unrecoverable state leading to "iconv body filter skiped" error upon every subsequent request. thanks numberlife for the report. also introduced some coding style fixes.</li><li> bugfix: lowered the error log level for HTTP 0.9 requests from "error" to "warn" to prevent malicious clients from flooding the error logs.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyRedisLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyRedisLibrary" href="null#LuaRestyRedisLibrary" class="externalLink null">LuaRestyRedisLibrary</a> to 0.21.<ul><li> bugfix: the "attempt to call local new_tab (a table value)" error might happen when <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> 2.0 was used and a local Lua module named "table.new" was visible. thanks Michael Pirogov for the report.</li><li> doc: fixed code examples to check redis pipelined requests' return values more strictly. some commands (like hkeys and smembers) may return empty tables, which may result in <code>nil res[1]</code> values. thanks Dejiang Zhu for the patch.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyCoreLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyCoreLibrary" href="null#LuaRestyCoreLibrary" class="externalLink null">LuaRestyCoreLibrary</a> to 0.1.2.<ul><li> change: updated the implementation to reflect recent changes in shared dictionary zones of <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a>. now we require <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> 0.9.17+.</li></ul></li><li> upgraded <a tiddlylink="LuaCjsonLibrary" refresh="link" target="_blank" title="External link to null#LuaCjsonLibrary" href="null#LuaCjsonLibrary" class="externalLink null">LuaCjsonLibrary</a> to 2.1.0.3.<ul><li> feature: now we allow up to 16 decimal places in JSON number encoding via <code>cjson.encode_number_precision()</code>. thanks lordnynex for the patch.</li><li> bugfix: fixed the warning "inline function ‘fpconv_init’ declared but never defined" from gcc.</li><li> bugfix: Makefile: removed the slash (<code>/</code>) after <code>$(DESTDIR)</code> so as to support relative path values in make variable <code>LUA_LIB_DIR</code>.</li></ul></li><li> upgraded <a tiddlylink="RestyCLI" refresh="link" target="_blank" title="External link to null#RestyCLI" href="null#RestyCLI" class="externalLink null">RestyCLI</a> to 0.04.<ul><li> feature: now the <code>resty</code> command-line utility looks for an nginx under the directory of itself as well (for Win32 <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>).</li><li> bugfix: worked around a bug regarding temp directory cleanup in msys perl 5.8.8 (and possibly other versions of msys perl as well).</li><li> bugfix: ensure we append an appropriate executable file extension when testing the existence of executables on exotic systems like Win32.</li></ul></li><li> upgraded <a tiddlylink="LuaRdsParserLibrary" refresh="link" target="_blank" title="External link to null#LuaRdsParserLibrary" href="null#LuaRdsParserLibrary" class="externalLink null">LuaRdsParserLibrary</a> to 0.06.<ul><li> bugfix: fixed the <code>u_char</code> C data type for MinGW gcc which lacks it.</li><li> bugfix: Makefile: added an explicit <code>.c -&gt; .o</code> rule to help MinGW make.</li><li> bugfix: Makefile: removed the slash (<code>/</code>) after <code>$(DESTDIR)</code> so as to support relative path values in make variable <code>LUA_LIB_DIR</code>.</li></ul></li><li> upgraded <a tiddlylink="LuaRedisParserLibrary" refresh="link" target="_blank" title="External link to null#LuaRedisParserLibrary" href="null#LuaRedisParserLibrary" class="externalLink null">LuaRedisParserLibrary</a> to 0.12.<ul><li> bugfix: Makefile: added an explicit <code>.c -&gt; .o</code> rule to help MinGW make.</li><li> bugfix: Makefile: removed the slash (<code>/</code>) after <code>$(DESTDIR)</code> so as to support relative path values in make variable <code>LUA_LIB_DIR</code>.</li></ul></li><li> upgraded <a tiddlylink="RdsCsvNginxModule" refresh="link" target="_blank" title="External link to null#RdsCsvNginxModule" href="null#RdsCsvNginxModule" class="externalLink null">RdsCsvNginxModule</a> to 0.07.<ul><li> bugfix: fixed compilation errors with MinGW gcc on Win32.</li><li> bugfix: fixed errors and warnings with C compilers without variadic macro support.</li></ul></li><li> upgraded <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> to v2.1-20151028: <a target="_blank" title="External link to https://github.com/openresty/luajit2/tags" href="https://github.com/openresty/luajit2/tags" class="externalLink">https://github.com/openresty/luajit2/tags</a><ul><li> imported Mike Pall's latest changes:<ul><li> limit number of arguments given to <code>io.lines()</code> and <code>fp:lines()</code>.</li><li> ARM64: fix <code>__call</code> metamethod handling for tail calls.</li><li> FFI: Do not propagate qualifiers into subtypes of complex.</li><li> feature: parse binary number literals (<code>0bxxx</code>).</li><li> fix NYICF error message.</li><li> properly handle OOM in <code>trace_save()</code>.</li><li> ARM64: add support for saving bytecode as object files.</li><li> ARM64: fix ELF bytecode saving.</li><li> feature: parse Unicode string escape <code>\u{XX...} </code>.</li><li> FFI: add <code>ssize_t</code> declaration.</li><li> fix unsinking check.</li><li> feature: add <code>collectgarbage("isrunning")</code>.</li><li> flush symbol tables in <code>jit.dump</code> on trace flush.</li></ul></li></ul></li></ul><h1> Version 1.9.3.1 - 12 August 2015</h1><ul><li> upgraded the Nginx core to 1.9.3.<ul><li> see the changes here: <a target="_blank" title="External link to http://nginx.org/en/CHANGES" href="http://nginx.org/en/CHANGES" class="externalLink">http://nginx.org/en/CHANGES</a></li></ul></li><li> bugfix: <code>./configure --help</code>: fixed the usage text for the <code>--with-debug</code> option. thanks Kipras Mancevičius for the report.</li><li> bugfix: link failures with OpenSSL might happen on 64-bit Mac OS X when the <code>./configure</code> option <code>--with-openssl=PATH</code> was used and the OpenSSL source was recent enough. thanks grasses for the report.</li><li> upgraded <a tiddlylink="PostgresNginxModule" refresh="link" target="_blank" title="External link to null#PostgresNginxModule" href="null#PostgresNginxModule" class="externalLink null">PostgresNginxModule</a> to 1.0rc7.<ul><li> feature: fixed compilation errors with nginx 1.9.1+. thanks Vadim A. Misbakh-Soloviov for the original patch.</li></ul></li></ul>See <a tiddlylink="ChangeLog1007010" refresh="link" target="_blank" title="External link to null#ChangeLog1007010" href="null#ChangeLog1007010" class="externalLink null">ChangeLog1007010</a> for change log for <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> 1.7.10.x.</description>
<link>null#ChangeLog1009003</link>
<pubDate>Mon, 23 Nov 2015 13:14:00 GMT</pubDate>
</item>
<item>
<title>Donors</title>
<description><a tiddler="Donors" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><br>Donors donating more than 1000 USD are listed here to express our appreciation. If you have ever donated more than 1000 USD, please contact me and send me your company or personal logos.<br><br><span>
<img src="kugou-music.jpg">
</span></description>
<link>null#Donors</link>
<pubDate>Tue, 11 Aug 2015 10:24:00 GMT</pubDate>
</item>
<item>
<title>eBooks</title>
<description><a tiddler="eBooks" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><br><h1> eBook "agentzh's Nginx Tutorials" (version 2012.04.18)</h1><ul><li> English Edition<ul><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-enuk.html" href="https://openresty.org/download/agentzh-nginx-tutorials-enuk.html" class="externalLink">HTML Single-Page Format</a> (Web browser users)</li><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-enuk.mobi" href="https://openresty.org/download/agentzh-nginx-tutorials-enuk.mobi" class="externalLink">MOBI Format</a> (Kindle users)</li><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-enuk.epub" href="https://openresty.org/download/agentzh-nginx-tutorials-enuk.epub" class="externalLink">EPUB Format</a> (Sony, Apple and other users)</li><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-enuk.pdf" href="https://openresty.org/download/agentzh-nginx-tutorials-enuk.pdf" class="externalLink">PDF Format</a> (Sony Digital Paper and PC users)</li></ul></li><li> Chinese Edition<ul><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html" href="https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html" class="externalLink">HTML Single-Page Format</a> (Web browser users)</li><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-zhcn.mobi" href="https://openresty.org/download/agentzh-nginx-tutorials-zhcn.mobi" class="externalLink">MOBI Format</a> (Kindle users)</li><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-zhcn.epub" href="https://openresty.org/download/agentzh-nginx-tutorials-zhcn.epub" class="externalLink">EPUB Format</a> (Sony, Apple and other users)</li><li> <a target="_blank" title="External link to https://openresty.org/download/agentzh-nginx-tutorials-zhcn.pdf" href="https://openresty.org/download/agentzh-nginx-tutorials-zhcn.pdf" class="externalLink">PDF Format</a> (Sony Digital Paper and PC users)</li></ul></li><li> Git Repository<ul><li> <a target="_blank" title="External link to https://github.com/agentzh/nginx-tutorials" href="https://github.com/agentzh/nginx-tutorials" class="externalLink">https://github.com/agentzh/nginx-tutorials</a></li></ul></li></ul><h1> eBook "OpenResty Best Practices"</h1><ul><li> Chinese Edition<ul><li> <a target="_blank" title="External link to https://www.gitbook.com/book/moonbingbing/openresty-best-practices/details" href="https://www.gitbook.com/book/moonbingbing/openresty-best-practices/details" class="externalLink">Git Book</a></li></ul></li></ul></description>
<category>Resources</category>
<link>null#eBooks</link>
<pubDate>Wed, 08 Jul 2015 11:46:00 GMT</pubDate>
</item>
<item>
<title>ChangeLog1007010</title>
<description><a tiddler="ChangeLog1007010" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><h1> Version 1.7.10.2 - 3 July 2015</h1><ul><li> bugfix: ./configure: fixed the <code>--without-http_rewrite_module</code> option by disabling <a tiddlylink="NginxDevelKit" refresh="link" target="_blank" title="External link to null#NginxDevelKit" href="null#NginxDevelKit" class="externalLink null">NginxDevelKit</a> automatically; also automatically disable the <a tiddlylink="EncryptedSessionNginxModule" refresh="link" target="_blank" title="External link to null#EncryptedSessionNginxModule" href="null#EncryptedSessionNginxModule" class="externalLink null">EncryptedSessionNginxModule</a> when <a tiddlylink="NginxDevelKit" refresh="link" target="_blank" title="External link to null#NginxDevelKit" href="null#NginxDevelKit" class="externalLink null">NginxDevelKit</a> is disabled.</li><li> bugfix: ./configure: removed hacks to work around an old bug in <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a>'s build system (just recently fixed in <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a>).</li><li> bugfix: <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> compilation might fail when old gcc 4 compilers are used (like gcc 4.1.0). this regression had appeared in <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> 1.7.7.2. thanks aseiot for the report.</li><li> upgraded <a tiddlylink="RestyCLI" refresh="link" target="_blank" title="External link to null#RestyCLI" href="null#RestyCLI" class="externalLink null">RestyCLI</a> to 0.03.<ul><li> bugfix: resty: command-line options did not pass to the user Lua script unless <code>--</code> was intentionally specified. now standalone Lua scripts with a shebang line work out of the box (if <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> is used, which is the default). thanks neomantra for the report.</li><li> bugfix: resty: now sends <code>error_log</code> to <code>stderr</code> instead of the system-specific path <code>/dev/stderr</code>. thanks Evan Wies for the patch.</li><li> doc: added the new section "Test Suite" as per Enrique Garcia's request.</li><li> tests: fixed test failures on Mac OS X. thanks Enrique García for the report.</li></ul></li><li> upgraded <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> to 0.9.16.<ul><li> feature: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxencode_base64" href="https://github.com/openresty/lua-nginx-module#ngxencode_base64" class="externalLink">ngx.encode_base64()</a>: added support for the "no_padding" boolean argument to disable padding when a true value is specified. thanks Shuxin Yang for the patch. this feature can be used for streaming base64 computation.</li><li> feature: fixed compilation failures with nginx 1.9.0. thanks Charles R. Portwood II for the original patch.</li><li> feature: removed the dead code for the old <code>NGX_THREADS</code> mode which broke the new nginx (1.7.11+) with thread pool support. thanks Tatsuhiko Kubo for the patch.</li><li> bugfix: use of <code>ngx_http_image_filter_module</code> might lead to request hang due to duplicate header filter invocations. thanks Antony Dovgal for the report.</li><li> bugfix: we should never automatically set <code>Content-Type</code> on 304 responses. thanks Simon Eskildsen for the patch.</li><li> bugfix: raw downstream cosockets did not support full-deplexing. thanks aviramc for the bug report and the original patch. this issue affected WebSockets too.</li><li> bugfix: we did not always discard the request body if the user Lua handlers didn't, which might cause 400 error pages for keep-alive or pipelined requests. thanks Shuxin Yang for the original patch.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxrespget_headers" href="https://github.com/openresty/lua-nginx-module#ngxrespget_headers" class="externalLink">ngx.resp.get_headers()</a>: some built-in headers were not accessible via lower-case. thanks Nick Muerdter for the patch.</li><li> bugfix: we might still pick up Lua/<a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> headers/libraries in the paths specified by nginx ./configure's <code>--with-cc-opt=OPTS</code> and <code>--with-ld-opt=OPTS</code> optons even when the LUAJIT_INC/LUAJIT_LIB or LUA_INC/LUA_LIB environments were explicitly specified.</li><li> bugfix: config: we might miss the linker option <code>-ldl</code> when we shouldn't. this might lead to build failures.</li><li> bugfix: access nonexistent fields in the "ngx" table in <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_by_lua" href="https://github.com/openresty/lua-nginx-module#init_by_lua" class="externalLink">init_by_lua*</a> could lead to the exception "no request object found" because of the overreacting <code>__index</code> metamethod of the "ngx" table.</li><li> bugfix: fixed compilation failures with very old versions of PCRE, like 4.5.</li><li> doc: fixed a bug in an example where both <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#rewrite_by_lua" href="https://github.com/openresty/lua-nginx-module#rewrite_by_lua" class="externalLink">rewrite_by_lua</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#content_by_lua" href="https://github.com/openresty/lua-nginx-module#content_by_lua" class="externalLink">content_by_lua</a> produce response outputs. thanks fengidri for the report.</li><li> doc: fixed the context for the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_need_request_body" href="https://github.com/openresty/lua-nginx-module#lua_need_request_body" class="externalLink">lua_need_request_body</a> directive. thanks Tatsuhiko Kubo for the patch.</li><li> doc: fixed the code sample for <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxredirect" href="https://github.com/openresty/lua-nginx-module#ngxredirect" class="externalLink">ngx.redirect()</a> to reflect recent changes there. thanks Zi Lin for the report.</li><li> doc: added a note on possible uninitialized variables for short-circuited requests. thanks Simon Eskildsen for the patch.</li><li> tests: fixed nondeterminism due to unordered Lua table iterations. thanks Markus Linnala for the patch.</li></ul></li><li> upgraded <a tiddlylink="HeadersMoreNginxModule" refresh="link" target="_blank" title="External link to null#HeadersMoreNginxModule" href="null#HeadersMoreNginxModule" class="externalLink null">HeadersMoreNginxModule</a> to 0.26.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code> (this was the only change included in the new <code>v0.26</code> release tag as compared to the old <code>v0.26</code> release tag).</li><li> optimize: removed the unused C function <code>ngx_http_headers_more_rm_header</code>. thanks Markus Linnala for the catch.</li><li> doc: made it clear that <a target="_blank" title="External link to https://github.com/openresty/headers-more-nginx-module#more_set_headers" href="https://github.com/openresty/headers-more-nginx-module#more_set_headers" class="externalLink">more_set_headers</a> always override existing headers with the same name.</li></ul></li><li> upgraded <a tiddlylink="SetMiscNginxModule" refresh="link" target="_blank" title="External link to null#SetMiscNginxModule" href="null#SetMiscNginxModule" class="externalLink null">SetMiscNginxModule</a> to 0.29.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> tests: add openssl hmac defensive test. thanks Markus Linnala for the patch.</li></ul></li><li> upgraded <a tiddlylink="LuaUpstreamNginxModule" refresh="link" target="_blank" title="External link to null#LuaUpstreamNginxModule" href="null#LuaUpstreamNginxModule" class="externalLink null">LuaUpstreamNginxModule</a> to 0.03.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> doc: README.md: fixed the <a target="_blank" title="External link to https://github.com/openresty/lua-upstream-nginx-module#get_backup_peers" href="https://github.com/openresty/lua-upstream-nginx-module#get_backup_peers" class="externalLink">get_backup_peers</a> example. thanks Jakub Kramarz for the patch.</li></ul></li><li> upgraded <a tiddlylink="SrcacheNginxModule" refresh="link" target="_blank" title="External link to null#SrcacheNginxModule" href="null#SrcacheNginxModule" class="externalLink null">SrcacheNginxModule</a> to 0.30.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li></ul></li><li> upgraded <a tiddlylink="DrizzleNginxModule" refresh="link" target="_blank" title="External link to null#DrizzleNginxModule" href="null#DrizzleNginxModule" class="externalLink null">DrizzleNginxModule</a> to 0.1.9.<ul><li> feature: fixed compilation errors with nginx 1.9.1+.</li><li> feature: automatic libdrizzle path discovery for Ubuntu 12.04. thanks Mathew Heard for the patch.</li><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li></ul></li><li> upgraded <a tiddlylink="PostgresNginxModule" refresh="link" target="_blank" title="External link to null#PostgresNginxModule" href="null#PostgresNginxModule" class="externalLink null">PostgresNginxModule</a> to 1.0rc6.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> bugfix: use <code>ngx_abs()</code> instead of <code>abs()</code> to fix one clang warning (<code>-Wabsolute-value</code>).</li></ul></li><li> upgraded <a tiddlylink="RdsCsvNginxModule" refresh="link" target="_blank" title="External link to null#RdsCsvNginxModule" href="null#RdsCsvNginxModule" class="externalLink null">RdsCsvNginxModule</a> to 0.06.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> bugfix: fixed two clang <code>-Wconditional-uninitialized</code> warnings.</li><li> doc: improved the documentation a lot.</li></ul></li><li> upgraded <a tiddlylink="RdsJsonNginxModule" refresh="link" target="_blank" title="External link to null#RdsJsonNginxModule" href="null#RdsJsonNginxModule" class="externalLink null">RdsJsonNginxModule</a> to 0.14.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> doc: improved the documentation a lot.</li></ul></li><li> upgraded <a tiddlylink="EchoNginxModule" refresh="link" target="_blank" title="External link to null#EchoNginxModule" href="null#EchoNginxModule" class="externalLink null">EchoNginxModule</a> to 0.58.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> bugfix: we no longer break on subrequests when the <code>ngx_http_ssi_module</code> is diasbled. thanks Anthony Ryan for the patch.</li><li> bugfix: use of <code>ngx_http_image_filter_module</code> might lead to request hang due to duplicate header filter invocations.</li></ul></li><li> upgraded <a tiddlylink="MemcNginxModule" refresh="link" target="_blank" title="External link to null#MemcNginxModule" href="null#MemcNginxModule" class="externalLink null">MemcNginxModule</a> to 0.16.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> bugfix: fixed clang warnings on "unused variables" in the Ragel generated source.</li></ul></li><li> upgraded <a tiddlylink="Redis2NginxModule" refresh="link" target="_blank" title="External link to null#Redis2NginxModule" href="null#Redis2NginxModule" class="externalLink null">Redis2NginxModule</a> to 0.12.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> bugfix: fixed clang warnings on "unused variables" in the Ragel generated source.</li><li> bugfix: always set the response status code in case of bad statuses like 504. thanks Kaito Sys for the report.</li><li> doc: typo fixes from Karan Chaudhary.</li></ul></li><li> upgraded <a tiddlylink="EncryptedSessionNginxModule" refresh="link" target="_blank" title="External link to null#EncryptedSessionNginxModule" href="null#EncryptedSessionNginxModule" class="externalLink null">EncryptedSessionNginxModule</a> to 0.04.<ul><li> feature: added debugging logs for expiration times during encryption and decription. also adjusted other debug logging messages a bit. thanks Kalpesh Patel for requesting this.</li><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> bugfix: fixed warnings from the Microsoft C/C++ compiler. thanks Edwin Cleton for the report.</li><li> doc: improved the documentation a lot.</li></ul></li><li> upgraded <a tiddlylink="IconvNginxModule" refresh="link" target="_blank" title="External link to null#IconvNginxModule" href="null#IconvNginxModule" class="externalLink null">IconvNginxModule</a> to 0.11.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li></ul></li><li> upgraded <a tiddlylink="ArrayVarNginxModule" refresh="link" target="_blank" title="External link to null#ArrayVarNginxModule" href="null#ArrayVarNginxModule" class="externalLink null">ArrayVarNginxModule</a> to 0.04.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> doc: improved the documentation a lot.</li></ul></li><li> upgraded <a tiddlylink="XssNginxModule" refresh="link" target="_blank" title="External link to null#XssNginxModule" href="null#XssNginxModule" class="externalLink null">XssNginxModule</a> to 0.05.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li><li> bugfix: fixed clang warnings on "unused variables" in the Ragel generated source.</li><li> doc: improved the documentation a lot.</li></ul></li><li> upgraded <a tiddlylink="FormInputNginxModule" refresh="link" target="_blank" title="External link to null#FormInputNginxModule" href="null#FormInputNginxModule" class="externalLink null">FormInputNginxModule</a> to 0.11.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li></ul></li><li> upgraded <a tiddlylink="CoolkitNginxModule" refresh="link" target="_blank" title="External link to null#CoolkitNginxModule" href="null#CoolkitNginxModule" class="externalLink null">CoolkitNginxModule</a> to 0.2rc3.<ul><li> feature: fixed compilation failures with nginx 1.7.11+ configured with <code>--with-threads</code>.</li></ul></li><li> upgraded <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> to v2.1-20150622: <a target="_blank" title="External link to https://github.com/openresty/luajit2/tags" href="https://github.com/openresty/luajit2/tags" class="externalLink">https://github.com/openresty/luajit2/tags</a><ul><li> imported Mike Pall's latest changes:<ul><li> Add Xbox One port.</li><li> Fix narrowing of TOBIT.</li><li> x64: Allow building without external unwinder.</li><li> x86/x64: Fix argument check for bit shifts.</li><li> x64: Add LJ_GC64 mode interpreter. Enable this mode with: make <code>XCFLAGS=-DLUAJIT_ENABLE_GC64</code></li><li> Disable trace stitching (for now) due to a design mistake.</li><li> Fix stack check in narrowing optimization.</li><li> ARM64: Fix math.floor/math.ceil for string args.</li><li> DynASM/PPC: Add sub/shift/rotate/clear instruction aliases.</li><li> DynASM/PPC: Add support for parameterized shifts/masks.</li><li> PPC: Fix cross-endian builds.</li><li> PPC: Fix write barrier in BC_TSETR.</li><li> Fix Lua/C API typecheck error for special indexes.</li><li> FFI: Fix FOLD rule for TOBIT + CONV num.u32.</li><li> ARM: Handle more arch defines.</li><li> Properly fail unsupported cross-compile to MIPS64.</li></ul></li></ul></li></ul><h1> Version 1.7.10.1 - 28 February 2015</h1><ul><li> upgraded the Nginx core to 1.7.10.<ul><li> see the changes here: <a target="_blank" title="External link to http://nginx.org/en/CHANGES" href="http://nginx.org/en/CHANGES" class="externalLink">http://nginx.org/en/CHANGES</a></li></ul></li><li> bugfix: applied the upstream_filter_finalize patch to the nginx core to fix corrupted <code>$upstream_response_time</code> variable values when <code>filter_finalize</code> and <a target="_blank" title="External link to http://nginx.org/r/error_page" href="http://nginx.org/r/error_page" class="externalLink">error_page</a> are both used. thanks Daniel Bento for the report and Maxim Dounin for the patch.</li><li> bugfix: ./configure: added <code>--without-http_upstream_least_conn_module</code> and <code>--without-http_upstream_keepalive_module</code> to the usage text (for <code>--help</code>) to reflect recent changes in the nginx core. thanks Seyhun Cavus for the report.</li><li> bugfix: ./configure: renamed the <code>--without-http_limit_zone_module</code> option to <code>--without-http_limit_conn_module</code> to reflect the change in recent nginx cores. thanks Seyhun Cavus for the report.</li><li> upgraded <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> to v2.1-20150223: <a target="_blank" title="External link to https://github.com/openresty/luajit2/tags" href="https://github.com/openresty/luajit2/tags" class="externalLink">https://github.com/openresty/luajit2/tags</a><ul><li> imported Mike Pall's latest changes:<ul><li> x86/x64: fix code generation for fused test/arith ops. thanks to Alexander Nasonov and AFL.</li><li> fix string to number conversion. thanks to Lesley De Cruz.</li><li> fix lexer error for chunks without tokens.</li><li> LJ_FR2: fix bytecode generation for method lookups.</li><li> FFI: Prevent DSE across <code>ffi.string()</code>.</li></ul></li></ul></li><li> upgraded <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> to 0.9.15.<ul><li> bugfix: the value of the Location response header set by <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxredirect" href="https://github.com/openresty/lua-nginx-module#ngxredirect" class="externalLink">ngx.redirect()</a> or the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxheaderheader" href="https://github.com/openresty/lua-nginx-module#ngxheaderheader" class="externalLink">ngx.header.HEADER</a> API might get overwritten by nginx's header filter to the fully qualified form (with the scheme and host parts).</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_shared_dict" href="https://github.com/openresty/lua-nginx-module#lua_shared_dict" class="externalLink">lua_shared_dict</a>: use of Lua numbers as the value in shared dict might lead to unaligned accesses which could lead to crashes on architectures requiring data alignment (like ARMv6). thanks Shuxin Yang for the fix and thanks Stefan Parvu and Brandon B for the report.</li><li> bugfix: using error codes (<code>ngx.ERROR</code> or &gt;=300) in <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxexit" href="https://github.com/openresty/lua-nginx-module#ngxexit" class="externalLink">ngx.exit()</a> in <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#header_filter_by_lua" href="https://github.com/openresty/lua-nginx-module#header_filter_by_lua" class="externalLink">header_filter_by_lua*</a> might lead to Lua stack overflow.</li><li> feature: improved the debugging event logging for timers created by <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxtimerat" href="https://github.com/openresty/lua-nginx-module#ngxtimerat" class="externalLink">ngx.timer.at()</a>.</li><li> optimize: fixed padding holes in our struct memory layouts for 64-bit systems to save a little memory.</li><li> optimize: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#header_filter_by_lua" href="https://github.com/openresty/lua-nginx-module#header_filter_by_lua" class="externalLink">header_filter_by_lua*</a>: removed a piece of useless code. thanks Zi Lin for the report.</li><li> doc: emphasized the capability of using nginx variables in the Lua file path in <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#content_by_lua_file" href="https://github.com/openresty/lua-nginx-module#content_by_lua_file" class="externalLink">content_by_lua_file</a>/<a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#content_by_lua_file" href="https://github.com/openresty/lua-nginx-module#content_by_lua_file" class="externalLink">rewrite_by_lua_file</a>/<a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#access_by_lua" href="https://github.com/openresty/lua-nginx-module#access_by_lua" class="externalLink">access_by_lua_file</a>.</li></ul></li><li> upgraded <a tiddlylink="SrcacheNginxModule" refresh="link" target="_blank" title="External link to null#SrcacheNginxModule" href="null#SrcacheNginxModule" class="externalLink null">SrcacheNginxModule</a> to 0.29.<ul><li> bugfix: upon cache hits, we might let the nginx core's header filter module overwrite the <code>Location</code> response header's values like "/foo/bar" to the fully-qualified form (like "<a target="_blank" title="External link to http://test.com/foo/bar" href="http://test.com/foo/bar" class="externalLink">http://test.com/foo/bar</a>"). thanks AlexClineBB for the report.</li></ul></li><li> upgraded <a tiddlylink="RestyCLI" refresh="link" target="_blank" title="External link to null#RestyCLI" href="null#RestyCLI" class="externalLink null">RestyCLI</a> to 0.02.<ul><li> bugfix: we did not explicitly specify the pid file path, which may conflict with the default pid path if the user compiles nginx with the <code>--pid-path=PATH</code> ./configure option. thanks fancyrabbit for the report.</li></ul></li></ul>See <a tiddlylink="ChangeLog1007007" refresh="link" target="_blank" title="External link to null#ChangeLog1007007" href="null#ChangeLog1007007" class="externalLink null">ChangeLog1007007</a> for change log for <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> 1.7.7.x.</description>
<link>null#ChangeLog1007010</link>
<pubDate>Sat, 04 Jul 2015 11:13:00 GMT</pubDate>
</item>
<item>
<title>RestyCLI</title>
<description>Resty-cli is a collection of command-line utilities for <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>.<br><br>The most useful utility in the collection is the <code>resty</code> command-line utility which runs a headless nginx that listens on nothing.<br><br>Git repository: <a target="_blank" title="External link to https://github.com/openresty/resty-cli" href="https://github.com/openresty/resty-cli" class="externalLink">https://github.com/openresty/resty-cli</a><br>Documentation: <a target="_blank" title="External link to https://github.com/openresty/resty-cli#readme" href="https://github.com/openresty/resty-cli#readme" class="externalLink">https://github.com/openresty/resty-cli#readme</a></description>
<link>null#RestyCLI</link>
<pubDate>Thu, 19 Feb 2015 22:54:00 GMT</pubDate>
</item>
<item>
<title>ChangeLog1007007</title>
<description><a tiddler="ChangeLog1007007" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><h1> Version 1.7.7.2 - 4 February 2015</h1><ul><li> bundled the "resty" command-line utility (version 0.01) from the resty-cli project: <a target="_blank" title="External link to https://github.com/openresty/resty-cli" href="https://github.com/openresty/resty-cli" class="externalLink">https://github.com/openresty/resty-cli</a><ul><li> bugfix: the resty utility could not start when the nginx was built with <code>./configure --conf-path=PATH</code> where <code>PATH</code> was not <code>conf/nginx.conf</code>. thanks Zhengyi Lai for the report.</li><li> feature: added support for user-supplied arguments which the user Lua scripts can access via the global Lua table "arg", just as in the "lua" and "luajit" command-line utilities. thanks Guanlan Dai for the patch.</li><li> feature: added new command-line option <code>--nginx=PATH</code> to allow the user to explicitly specify the underlying nginx executable being invoked by this script. thanks Guanlan Dai for the patch.</li><li> feature: added support for multiple <code>-I</code> options to specify more than one user library search paths. thanks Guanlan Dai for the patch.</li><li> feature: print out resty's own version number when the -V option is specified.</li><li> feature: resty: added new options <code>--valgrind</code> and <code>--valgrind-opts=OPTS</code>.</li></ul></li><li> upgraded <a tiddlylink="SetMiscNginxModule" refresh="link" target="_blank" title="External link to null#SetMiscNginxModule" href="null#SetMiscNginxModule" class="externalLink null">SetMiscNginxModule</a> to 0.28.<ul><li> feature: added the <a target="_blank" title="External link to https://github.com/openresty/set-misc-nginx-module#set_base32_alphabet" href="https://github.com/openresty/set-misc-nginx-module#set_base32_alphabet" class="externalLink">set_base32_alphabet</a> config directive to allow the user to specify the alphabet used for base32 encoding/decoding. thanks Vladislav Manchev for the patch.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/set-misc-nginx-module#set_quote_sql_str" href="https://github.com/openresty/set-misc-nginx-module#set_quote_sql_str" class="externalLink">set_quote_sql_str</a>: we incorrectly escaped 0x1a to <code>\z</code> instead of <code>\Z</code>.</li><li> change: the old <a target="_blank" title="External link to https://github.com/openresty/set-misc-nginx-module#set_misc_base32_padding" href="https://github.com/openresty/set-misc-nginx-module#set_misc_base32_padding" class="externalLink">set_misc_base32_padding</a> directive is now deprecated; use <a target="_blank" title="External link to https://github.com/openresty/set-misc-nginx-module#set_base32_padding" href="https://github.com/openresty/set-misc-nginx-module#set_base32_padding" class="externalLink">set_base32_padding</a> instead.</li></ul></li><li> upgraded <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> to 0.9.14.<ul><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxregsub" href="https://github.com/openresty/lua-nginx-module#ngxregsub" class="externalLink">ngx.re.gsub</a>/<a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxresub" href="https://github.com/openresty/lua-nginx-module#ngxresub" class="externalLink">ngx.re.sub</a> incorrectly swallowed the character right after a 0-width match that happens to be the last match. thanks Guanlan Dai for the patch.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#tcpsocksetkeepalive" href="https://github.com/openresty/lua-nginx-module#tcpsocksetkeepalive" class="externalLink">tcpsock:setkeepalive()</a>: we did not check <code>NULL</code> connection pointers properly, which might lead to segmentation faults. thanks Yang Yue for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxquote_sql_str" href="https://github.com/openresty/lua-nginx-module#ngxquote_sql_str" class="externalLink">ngx.quote_str_str()</a> incorrectly escaped "\026" to "\z" while "\Z" is expected. thanks laodouya for the original patch.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxtimerat" href="https://github.com/openresty/lua-nginx-module#ngxtimerat" class="externalLink">ngx.timer.at</a>: fixed a small memory leak in case of running out of memory (which should be extremely rare though).</li><li> optimize: minor optimizations in timers.</li><li> feature: added the Lua global variable <code>__ngx_cycle</code> which is a lightuserdata holding the current <code>ngx_cycle_t</code> pointer, which may simplify some FFI-based Lua extensions.</li><li> doc: added a warning for the "share_all_vars" option for <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxlocationcapture" href="https://github.com/openresty/lua-nginx-module#ngxlocationcapture" class="externalLink">ngx.location.capture*</a>.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyCoreLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyCoreLibrary" href="null#LuaRestyCoreLibrary" class="externalLink null">LuaRestyCoreLibrary</a> to 0.1.0.<ul><li> bugfix: resty.core.regex: data corruptions might happen when recursively calling <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxregsub" href="https://github.com/openresty/lua-nginx-module#ngxregsub" class="externalLink">ngx.re.gsub</a> via the user replacement function argument because of incorrect reusing a globally shared captures Lua table. thanks James Hurst for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxregsub" href="https://github.com/openresty/lua-nginx-module#ngxregsub" class="externalLink">ngx.re.gsub</a>: garbage might get injected into gsub result when <code>ngx.*</code> API functions are called inside the user callback function for the replacement. thanks James Hurst for the report.</li><li> feature: resty.core.base: added the <code>FFI_BUSY</code> constant for <code>NGX_BUSY</code>.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyLrucacheLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyLrucacheLibrary" href="null#LuaRestyLrucacheLibrary" class="externalLink null">LuaRestyLrucacheLibrary</a> to 0.04.<ul><li> bugfix: resty.lrucache.pureffi: set(): it did not update to the new value at all if the key had an existing value (either stale or not). thanks Shuxin Yang for the patch.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyWebSocketLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyWebSocketLibrary" href="null#LuaRestyWebSocketLibrary" class="externalLink null">LuaRestyWebSocketLibrary</a> to 0.05.<ul><li> feature: <a target="_blank" title="External link to https://github.com/openresty/lua-resty-websocket#restywebsocketclient" href="https://github.com/openresty/lua-resty-websocket#restywebsocketclient" class="externalLink">resty.websocket.client</a>: added support for SSL/TLS connections (i.e., the <code>wss://</code> scheme). thanks Vladislav Manchev for the patch.</li><li> doc: mentioned the <a target="_blank" title="External link to http://bitop.luajit.org/index.html" href="http://bitop.luajit.org/index.html" class="externalLink">bitop</a> library dependency when using the standard Lua 5.1 interpreter (this is not needed for <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> because it is already built in). thanks Laurent Arnoud for the patch.</li></ul></li><li> upgraded <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> to v2.1-20150120: <a target="_blank" title="External link to https://github.com/openresty/luajit2/tags" href="https://github.com/openresty/luajit2/tags" class="externalLink">https://github.com/openresty/luajit2/tags</a><ul><li> imported Mike Pall's latest changes:<ul><li> bugfix: don't compile <code>IR_RETF</code> after <code>CALLT</code> to ff with side effects.</li><li> bugfix: fix <code>BC_UCLO</code>/<code>BC_JMP</code> join optimization in Lua parser.</li><li> bugfix: fix corner case in string to number conversion.</li><li> bugfix: x86: fix argument checks for <code>ipairs()</code> iterator.</li><li> bugfix: gracefully handle <code>lua_error()</code> for a suspended coroutine.</li><li> x86/x64: Drop internal x87 math functions. Use libm functions.</li><li> x86/x64: Call external symbols directly from interpreter code. (except for ELF/x86 PIC, where it's easier to use wrappers.)</li><li> ARM: Minor interpreter optimization.</li><li> x86: Minor interpreter optimization.</li><li> PPC/e500: Drop support for this architecture.</li><li> MIPS: Fix excess stack growth in interpreter.</li><li> PPC: Fix excess stack growth in interpreter.</li><li> ARM: Fix excess stack growth in interpreter.</li><li> ARM: Fix write barrier check in <code>BC_USETS</code>.</li><li> ARM64: Add build infrastructure and initial port of interpreter.</li><li> OpenBSD/x86: Better executable memory allocation for W^X mode.</li></ul></li></ul></li><li> bugfix: the <code>ngx_http_redis</code> module failed to compile when the <code>ngx_gzip</code> module was disabled. thanks anod221 for the report.</li></ul><h1> Version 1.7.7.1 - 6 December 2014</h1><ul><li> upgraded the Nginx core to 1.7.7.<ul><li> see the changes here: <a target="_blank" title="External link to http://nginx.org/en/CHANGES" href="http://nginx.org/en/CHANGES" class="externalLink">http://nginx.org/en/CHANGES</a></li></ul></li><li> bugfix: applied a patch to the nginx core to fix the memory invalid reads when exceeding the pre-configured limits in an <code>ngx_hash_t</code> hash table.</li><li> bugfix: applied a patch to the nginx core to fix a memory invalid read regression introduced in nginx 1.7.5+'s resolver.</li><li> ./configure: usage text: renamed <code>--with-luajit=PATH</code> to <code>--with-luajit=DIR</code>. thanks Dominic for the suggestion.</li><li> feature: ./configure: added the default prefix value to the usage text.</li><li> upgraded <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> to v2.1-20141128: <a target="_blank" title="External link to https://github.com/openresty/luajit2/tags" href="https://github.com/openresty/luajit2/tags" class="externalLink">https://github.com/openresty/luajit2/tags</a><ul><li> imported Mike Pall's latest changes:<ul><li> feature: FFI: added <code>ffi.typeinfo()</code>. thanks to Peter Colberg.</li><li> bugfix: fixed snapshot #0 handling for traces with a stack check on entry. this bug might lead to bad register overwrites (and eventually segmentation faults in GC upon trace exits, at least).</li><li> bugfix: FFI: no meta fallback when indexing pointer to incomplete struct.</li><li> bugfix: fixed fused constant loads under high register pressure.</li><li> bugfix: fixed DragonFly build (unsupported). thanks to Robin Hahling, Alex Hornung, and Joris Giovannangeli.</li><li> bugfix: FFI: fixed initialization of unions of subtypes. thanks to Peter Colberg.</li><li> bugfix: FFI: Fix for cdata vs. non-cdata arithmetic and comparisons. thanks to Roman Tsisyk.</li><li> optimize: eliminated hmask guard for forwarded HREFK.</li></ul></li><li> debugging: added an (expensive) assertion to check GC objects in current stack upon trace exiting. thanks Mike Pall. only enabled when building with <code>-DLUA_USE_ASSERT</code>.</li></ul></li><li> upgraded <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> to 0.9.13.<ul><li> optimize: reduced the pool size of a fake connection from the default pool size (16KB) to 128B, affecting <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_worker_by_lua" href="https://github.com/openresty/lua-nginx-module#init_worker_by_lua" class="externalLink">init_worker_by_lua</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxtimerat" href="https://github.com/openresty/lua-nginx-module#ngxtimerat" class="externalLink">ngx.timer.at</a>.</li><li> optimize: made fake requests share their connection pools, affecting <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_worker_by_lua" href="https://github.com/openresty/lua-nginx-module#init_worker_by_lua" class="externalLink">init_worker_by_lua</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxtimerat" href="https://github.com/openresty/lua-nginx-module#ngxtimerat" class="externalLink">ngx.timer.at</a>.</li><li> feature: the error logger used by ngx.timer.at handlers now outputs the "client: xxx, server: xxx" context info for the original (true) request creating the timer.</li><li> feature: added nginx configuration file names and line numbers to the rewrite/access/content/log_by_lua directives' Lua chunk names in order to simplify debugging.</li><li> feature: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxflush" href="https://github.com/openresty/lua-nginx-module#ngxflush" class="externalLink">ngx.flush(true)</a> now returns the "timeout" and "client aborted" errors to the Lua land for the cases that writing to the client is timed out or the client closes the connection prematurely, respectively.</li><li> feature: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxflush" href="https://github.com/openresty/lua-nginx-module#ngxflush" class="externalLink">ngx.flush(true)</a> can now wait on delayed events due to nginx's <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate" href="http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate" class="externalLink">limit_rate</a> config directive or <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_core_module.html#var_limit_rate" href="http://nginx.org/en/docs/http/ngx_http_core_module.html#var_limit_rate" class="externalLink">$limit_rate</a> variable settings. thanks Shafreeck Sea for the original patch.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxflush" href="https://github.com/openresty/lua-nginx-module#ngxflush" class="externalLink">ngx.flush()</a>, <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxeof" href="https://github.com/openresty/lua-nginx-module#ngxeof" class="externalLink">ngx.eof()</a>, and some other things did not update busy/free chains after calling the output filters.</li><li> bugfix: ngx_gzip/ngx_gunzip module filters might cause <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxflush" href="https://github.com/openresty/lua-nginx-module#ngxflush" class="externalLink">ngx.flush(true)</a> to hang until timeout for nginx 1.7.7+ (and some other old versions of nginx). thanks Maxim Dounin for the help.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxget_phase" href="https://github.com/openresty/lua-nginx-module#ngxget_phase" class="externalLink">ngx.get_phase()</a> did not work in the context of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_worker_by_lua" href="https://github.com/openresty/lua-nginx-module#init_worker_by_lua" class="externalLink">init_worker_by_lua*</a>.</li><li> bugfix: use of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxflush" href="https://github.com/openresty/lua-nginx-module#ngxflush" class="externalLink">ngx.flush(true)</a> with the <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate" href="http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate" class="externalLink">limit_rate</a> config directive or the <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_core_module.html#var_limit_rate" href="http://nginx.org/en/docs/http/ngx_http_core_module.html#var_limit_rate" class="externalLink">$limit_rate</a> variable may hang the request forever for large volumn of output data. thanks Shafreeck Sea for the report.</li><li> bugfix: compilation error when PCRE is disabled in the nginx build. thanks Ivan Cekov for the report.</li><li> bugfix: when syslog was enabled in the <a target="_blank" title="External link to http://nginx.org/en/docs/ngx_core_module.html#error_log" href="http://nginx.org/en/docs/ngx_core_module.html#error_log" class="externalLink">error_log</a> directive for nginx 1.7.1+, use of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_worker_by_lua" href="https://github.com/openresty/lua-nginx-module#init_worker_by_lua" class="externalLink">init_worker_by_lua</a> or <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxtimerat" href="https://github.com/openresty/lua-nginx-module#ngxtimerat" class="externalLink">ngx.timer.at()</a> would lead to segmentation faults. thanks shun.zhang for the report.</li><li> bugfix: fixed compilation error with nginx 1.7.5+ because nginx 1.7.5+ changes the API in the events subsystem. thanks Charles R. Portwood II and Mathieu Le Marec for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqraw_header" href="https://github.com/openresty/lua-nginx-module#ngxreqraw_header" class="externalLink">ngx.req.raw_header()</a>: buffer overflow and the "buffer error" exception might happen for massively pipelined downstream requests. thanks Dane Knecht for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqraw_header" href="https://github.com/openresty/lua-nginx-module#ngxreqraw_header" class="externalLink">ngx.req.raw_header()</a>: we might change nginx's internal buffer pointers, which might cause bad side-effects.</li><li> doc: added a new section, <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#cocockets-not-available-everywhere" href="https://github.com/openresty/lua-nginx-module#cocockets-not-available-everywhere" class="externalLink">Cocockets Not Available Everywhere</a>, under the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#known-issues" href="https://github.com/openresty/lua-nginx-module#known-issues" class="externalLink">Known Issues</a> section.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyDNSLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyDNSLibrary" href="null#LuaRestyDNSLibrary" class="externalLink null">LuaRestyDNSLibrary</a> to 0.14.<ul><li> feature: added support for the SPF record type specified by RFC 4408. thanks Tom Fitzhenry for the patch.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyLrucacheLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyLrucacheLibrary" href="null#LuaRestyLrucacheLibrary" class="externalLink null">LuaRestyLrucacheLibrary</a> to 0.03.<ul><li> feature: the <a target="_blank" title="External link to https://github.com/openresty/lua-resty-lrucache#get" href="https://github.com/openresty/lua-resty-lrucache#get" class="externalLink">get()</a> method now also returns the stale value as the second returned value if available.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyLockLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyLockLibrary" href="null#LuaRestyLockLibrary" class="externalLink null">LuaRestyLockLibrary</a> to 0.04.<ul><li> bugfix: the shared dictionary would incorrectly get unref'd for multiple times when the <a target="_blank" title="External link to https://github.com/openresty/lua-resty-lock#lock" href="https://github.com/openresty/lua-resty-lock#lock" class="externalLink">lock()</a> and/or <a target="_blank" title="External link to https://github.com/openresty/lua-resty-lock#unlock" href="https://github.com/openresty/lua-resty-lock#unlock" class="externalLink">unlock()</a> methods are called more than once. thanks Peng Wu for the report and Dejiang Zhu for the patch.</li></ul></li><li> upgraded <a tiddlylink="EchoNginxModule" refresh="link" target="_blank" title="External link to null#EchoNginxModule" href="null#EchoNginxModule" class="externalLink null">EchoNginxModule</a> to 0.57.<ul><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/echo-nginx-module#echo_client_request_headers" href="https://github.com/openresty/echo-nginx-module#echo_client_request_headers" class="externalLink">$echo_client_request_headers</a>: buffer overflow and the "buffer error" exception might happen for massively pipelined downstream requests.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/echo-nginx-module#echo_client_request_headers" href="https://github.com/openresty/echo-nginx-module#echo_client_request_headers" class="externalLink">$echo_client_request_headers</a>: we might change nginx's internal buffer pointers, which might cause bad side-effects.</li></ul></li><li> upgraded <a tiddlylink="DrizzleNginxModule" refresh="link" target="_blank" title="External link to null#DrizzleNginxModule" href="null#DrizzleNginxModule" class="externalLink null">DrizzleNginxModule</a> to 0.1.8.<ul><li> bugfix: fixed compilation error with nginx 1.7.5+ because nginx 1.7.5+ changes the API in the events subsystem.</li></ul></li><li> upgraded <a tiddlylink="PostgresNginxModule" refresh="link" target="_blank" title="External link to null#PostgresNginxModule" href="null#PostgresNginxModule" class="externalLink null">PostgresNginxModule</a> to 1.0rc5.<ul><li> bugfix: fixed compilation error with nginx 1.7.5+ because nginx 1.7.5+ changes the API in the events subsystem.</li></ul></li><li> upgraded <a tiddlylink="CoolkitNginxModule" refresh="link" target="_blank" title="External link to null#CoolkitNginxModule" href="null#CoolkitNginxModule" class="externalLink null">CoolkitNginxModule</a> to 0.2rc2.<ul><li> bugfix: compilation failed when PCRE was disabled in the nginx build.</li><li> feature: added the "$location" variable, by Piotr Sikora.</li></ul></li><li> upgraded <a tiddlylink="SetMiscNginxModule" refresh="link" target="_blank" title="External link to null#SetMiscNginxModule" href="null#SetMiscNginxModule" class="externalLink null">SetMiscNginxModule</a> to 0.27.<ul><li> bugfix: bugfix: fixed build failure when <code>--with-mail_ssl_module</code> is specified while <code>--with-http_ssl_module</code> is not. thanks Xiaochen Wang for the report.</li></ul></li></ul>See <a tiddlylink="ChangeLog1007004" refresh="link" target="_blank" title="External link to null#ChangeLog1007004" href="null#ChangeLog1007004" class="externalLink null">ChangeLog1007004</a> for change log for <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> 1.7.4.x.</description>
<link>null#ChangeLog1007007</link>
<pubDate>Wed, 04 Feb 2015 21:24:00 GMT</pubDate>
</item>
<item>
<title>BuildSystemtap</title>
<description><a tiddler="BuildSystemtap" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br>1. Install the prerequisites on your Linux distribution, for example:<br><ul><li> Fedora:</li></ul><pre>sudo yum install gcc gcc-c++ elfutils-devel
</pre><ul><li> Ubuntu:</li></ul><pre>sudo apt-get install build-essential zlib1g-dev elfutils libdw-dev gettext
</pre>2. Compile and install systemtap from source:<br><pre>wget https://sourceware.org/systemtap/ftp/releases/systemtap-2.6.tar.gz
tar -xvf systemtap-2.6.tar.gz
cd systemtap-2.6/
./configure --prefix=/opt/stap --disable-docs \
--disable-publican --disable-refdocs CFLAGS="-g -O2"
make -j8 # the -j8 option assumes you have about 8 logical CPU cores available
sudo make install
</pre><br>If you'd like to build with the latest elfutils from the official source too:<br><pre>cd /tmp
wget https://fedorahosted.org/releases/e/l/elfutils/0.161/elfutils-0.161.tar.bz2
tar -xvf elfutils-0.161.tar.bz2
</pre><br>Pass the following option to <code>./configure</code> when building systemtap (above):<br><pre> --with-elfutils=/tmp/elfutils-0.161
</pre>Generally it's recommended to use the elfutils that comes with your package manager if it is up to date, because it's usually compiled with the necessary other libraries such as zlib to decompress headers.<br><br>And then invoke stap like this:<br><pre>$ /opt/stap/bin/stap -V
Systemtap translator/driver (version 2.6/0.161, non-git sources)
Copyright (C) 2005-2014 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
enabled features: AVAHI LIBRPM LIBSQLITE3 NSS BOOST_SHARED_PTR TR1_UNORDERED_MAP NLS LIBXML2
</pre>Or you can just add the <code>/opt/stap/bin</code> path to your <code>PATH</code> environment.<br></description>
<link>null#BuildSystemtap</link>
<pubDate>Tue, 27 Jan 2015 06:32:00 GMT</pubDate>
</item>
<item>
<title>Presentations</title>
<description><a tiddler="Presentations" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><br>Here goes a list of slides that I used in my talks regarding <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>.<br><br>These slides are powered by the <a target="_blank" title="External link to https://github.com/kindy61/slides.htm" href="https://github.com/kindy61/slides.htm" class="externalLink">slides.htm</a> slide-making engine based on AJAX.<br><br><strong><em>Note: Please use the arrow keys or pageup/pagedown keys on your keyboard to switch slides.</em></strong><br><h1> Year 2014</h1><h2> The Latest and Greatest from ngx_lua: New Features &amp; Tools</h2>This talk was given at <a target="_blank" title="External link to http://nginx.com/nginxconf/" href="http://nginx.com/nginxconf/" class="externalLink">NGINX Conference</a> 2014 on 21 October 2014.<br><br>Talk summary: <a target="_blank" title="External link to https://nginx.busyconf.com/activities/53d854c1c9e255cf2d00007b" href="https://nginx.busyconf.com/activities/53d854c1c9e255cf2d00007b" class="externalLink">https://nginx.busyconf.com/activities/53d854c1c9e255cf2d00007b</a><br><br>Video recording: <a target="_blank" title="External link to https://www.youtube.com/watch?v=Z0fQabvVhIk" href="https://www.youtube.com/watch?v=Z0fQabvVhIk" class="externalLink">https://www.youtube.com/watch?v=Z0fQabvVhIk</a><br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-conf-2014/" href="http://agentzh.org/misc/slides/nginx-conf-2014/" class="externalLink">http://agentzh.org/misc/slides/nginx-conf-2014/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-conf-2014.pdf" href="http://agentzh.org/misc/slides/nginx-conf-2014.pdf" class="externalLink">http://agentzh.org/misc/slides/nginx-conf-2014.pdf</a><br><br><h2> NGINX, Lua, and beyond</h2>This talk was given at NGINX Inc's <a target="_blank" title="External link to https://www.eventbrite.com/e/nginx-user-summit-and-training-tickets-10393173261" href="https://www.eventbrite.com/e/nginx-user-summit-and-training-tickets-10393173261" class="externalLink">NGINX User Summit 2014</a> on 25 February 2014.<br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-user-summit-2014/" href="http://agentzh.org/misc/slides/nginx-user-summit-2014/" class="externalLink">http://agentzh.org/misc/slides/nginx-user-summit-2014/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf" href="http://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf" class="externalLink">http://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf</a><br><br><h1> Year 2013</h1><h2> The Way of Optimizing and Troubleshooting Our Lua Waf</h2>This talk was given at CloudFlare's Beer Meeting on 19 April 2013.<br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/beer-meeting-2013-04-19/" href="http://agentzh.org/misc/slides/beer-meeting-2013-04-19/" class="externalLink">http://agentzh.org/misc/slides/beer-meeting-2013-04-19/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/beer-meeting-2013-04-19.pdf" href="http://agentzh.org/misc/slides/beer-meeting-2013-04-19.pdf" class="externalLink">http://agentzh.org/misc/slides/beer-meeting-2013-04-19.pdf</a><br><br><h2> sregex: matching Perl 5 regexes on data streams</h2>This talk was given at <a target="_blank" title="External link to http://www.yapcna.org/yn2013/" href="http://www.yapcna.org/yn2013/" class="externalLink">YAPC::NA 2013</a> in Austin, TX, USA.<br><br>Talk summary: <a target="_blank" title="External link to http://www.yapcna.org/yn2013/talk/4762" href="http://www.yapcna.org/yn2013/talk/4762" class="externalLink">http://www.yapcna.org/yn2013/talk/4762</a><br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/yapc-na-2013-sregex/" href="http://agentzh.org/misc/slides/yapc-na-2013-sregex/" class="externalLink">http://agentzh.org/misc/slides/yapc-na-2013-sregex/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/yapc-na-2013-sregex.pdf" href="http://agentzh.org/misc/slides/yapc-na-2013-sregex.pdf" class="externalLink">http://agentzh.org/misc/slides/yapc-na-2013-sregex.pdf</a><br><br><h2> Flame Graphs for online performance profiling</h2>This talk was given at <a target="_blank" title="External link to http://www.yapcna.org/yn2013/" href="http://www.yapcna.org/yn2013/" class="externalLink">YAPC::NA 2013</a> in Austin, TX, USA.<br><br>Talk summary: <a target="_blank" title="External link to http://www.yapcna.org/yn2013/talk/4579" href="http://www.yapcna.org/yn2013/talk/4579" class="externalLink">http://www.yapcna.org/yn2013/talk/4579</a><br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs/" href="http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs/" class="externalLink">http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs.pdf" href="http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs.pdf" class="externalLink">http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs.pdf</a><br><br><h2> Introduction to off-CPU Time Flame Graphs</h2>This talk was given at the CloudFlare Beer Meeting on 23 August 2013.<br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/off-cpu-flame-graphs/" href="http://agentzh.org/misc/slides/off-cpu-flame-graphs/" class="externalLink">http://agentzh.org/misc/slides/off-cpu-flame-graphs/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/off-cpu-flame-graphs.pdf" href="http://agentzh.org/misc/slides/off-cpu-flame-graphs.pdf" class="externalLink">http://agentzh.org/misc/slides/off-cpu-flame-graphs.pdf</a><br><br><h1> Year 2012</h1><h2> ngx_openresty: an Nginx ecosystem glued by Lua</h2>This talk was given at <a target="_blank" title="External link to http://event.weibo.com/351359" href="http://event.weibo.com/351359" class="externalLink">Tech-Club Technical Salon</a> held in the Xiamen city.<br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/ngx-openresty-ecosystem/" href="http://agentzh.org/misc/slides/ngx-openresty-ecosystem/" class="externalLink">http://agentzh.org/misc/slides/ngx-openresty-ecosystem/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/ngx-openresty-ecosystem.pdf" href="http://agentzh.org/misc/slides/ngx-openresty-ecosystem.pdf" class="externalLink">http://agentzh.org/misc/slides/ngx-openresty-ecosystem.pdf</a><br><br><h2> Scripting libdrizzle with Lua inside Nginx</h2>This presentation was given at <a target="_blank" title="External link to http://www.percona.com/live/mysql-conference-2012/sessions/scripting-mysql-lua-and-libdrizzle-inside-nginx" href="http://www.percona.com/live/mysql-conference-2012/sessions/scripting-mysql-lua-and-libdrizzle-inside-nginx" class="externalLink">Percona Live MySQL Conference 2012</a> held in Santa Clara, CA, USA.<br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/libdrizzle-lua-nginx/#2" href="http://agentzh.org/misc/slides/libdrizzle-lua-nginx/#2" class="externalLink">http://agentzh.org/misc/slides/libdrizzle-lua-nginx/#2</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf" href="http://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf" class="externalLink">http://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf</a><br><br><h1> Year 2011</h1><h2> Applications of ngx_openresty and perl in lz.taobao.com</h2><br>This talk was given at <a target="_blank" title="External link to http://conference.perlchina.org/bjpw2011/talks" href="http://conference.perlchina.org/bjpw2011/talks" class="externalLink">Beijing Perl Workshop 2011</a>.<br><br>Watch the video online: <a target="_blank" title="External link to http://v.ku6.com/show/TY8Vre59guTE_C8o.html" href="http://v.ku6.com/show/TY8Vre59guTE_C8o.html" class="externalLink">http://v.ku6.com/show/TY8Vre59guTE_C8o.html</a><br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/perl-lz-apps/" href="http://agentzh.org/misc/slides/perl-lz-apps/" class="externalLink">http://agentzh.org/misc/slides/perl-lz-apps/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/perl-lz-apps.pdf" href="http://agentzh.org/misc/slides/perl-lz-apps.pdf" class="externalLink">http://agentzh.org/misc/slides/perl-lz-apps.pdf</a><br><br><h1> Year 2010</h1><h2> Introduction to nginx.conf scripting</h2>This talk was given at the <a target="_blank" title="External link to http://conference.perlchina.org" href="http://conference.perlchina.org" class="externalLink">Beijing Perl Workshop</a> 2010 April meeting and the <a target="_blank" title="External link to http://www.beijing-open-party.org/event/2" href="http://www.beijing-open-party.org/event/2" class="externalLink">Beijing OpenParty 2010 June event</a>.<br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-conf-scripting/" href="http://agentzh.org/misc/slides/nginx-conf-scripting/" class="externalLink">http://agentzh.org/misc/slides/nginx-conf-scripting/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-conf-scripting.pdf" href="http://agentzh.org/misc/slides/nginx-conf-scripting.pdf" class="externalLink">http://agentzh.org/misc/slides/nginx-conf-scripting.pdf</a><br><br>Please note that ngx_eval module is no longer recommended because we're in more favor of ngx_lua nowadays.<br><br><h2> Recent developments in nginx.conf scripting</h2>This talk was given at the <a target="_blank" title="External link to http://www.beijing-open-party.org/event/2" href="http://www.beijing-open-party.org/event/2" class="externalLink">Beijing OpenParty 2010 June event</a>.<br><br>View slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/recent-dev-nginx-conf/" href="http://agentzh.org/misc/slides/recent-dev-nginx-conf/" class="externalLink">http://agentzh.org/misc/slides/recent-dev-nginx-conf/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/recent-dev-nginx-conf.pdf" href="http://agentzh.org/misc/slides/recent-dev-nginx-conf.pdf" class="externalLink">http://agentzh.org/misc/slides/recent-dev-nginx-conf.pdf</a><br><br><h2> The state of the art of nginx.conf scripting</h2>This talk was given at the <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-state-of-the-art/" href="http://agentzh.org/misc/slides/nginx-state-of-the-art/" class="externalLink">ECUG 2010 event</a>.<br><br>Watch the (Chinese-speech) video online: <a target="_blank" title="External link to http://v.ku6.com/show/D00rqtnRwKzJdIsB.html" href="http://v.ku6.com/show/D00rqtnRwKzJdIsB.html" class="externalLink">http://v.ku6.com/show/D00rqtnRwKzJdIsB.html</a><br><br>View the (English) slides in your web browser: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-state-of-the-art/" href="http://agentzh.org/misc/slides/nginx-state-of-the-art/" class="externalLink">http://agentzh.org/misc/slides/nginx-state-of-the-art/</a><br><br>Download the slides as PDF: <a target="_blank" title="External link to http://agentzh.org/misc/slides/nginx-state-of-the-art.pdf" href="http://agentzh.org/misc/slides/nginx-state-of-the-art.pdf" class="externalLink">http://agentzh.org/misc/slides/nginx-state-of-the-art.pdf</a><br></description>
<category>Resources</category>
<link>null#Presentations</link>
<pubDate>Mon, 05 Jan 2015 22:47:00 GMT</pubDate>
</item>
<item>
<title>ChangeLog1007004</title>
<description><a tiddler="ChangeLog1007004" commandname="permalink" class="button command_permalink" title="Permalink for this tiddler" href="javascript:;">permalink</a><br><h1> Version 1.7.4.1 - 9 October 2014</h1><ul><li> upgraded the Nginx core to 1.7.4.<ul><li> see the changes here: <a target="_blank" title="External link to http://nginx.org/en/CHANGES" href="http://nginx.org/en/CHANGES" class="externalLink">http://nginx.org/en/CHANGES</a></li></ul></li><li> feature: added a new command-line utility, <code>resty</code>, to run Lua code or Lua files (for <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a>) directly from the command-line. it is installed into the "&lt;prefix&gt;/bin" directory. prodded by Vitaly Kosenko. This tool is currently experimental.</li><li> bugfix: <code>./configure</code>: we might misuse the homebrew version of <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> on Mac OS X when the user specified the <code>--with-ld-opt="-L/usr/local/lib"</code> option. thanks Aapo Talvensaari for the report.</li><li> bugfix: <code>util/install</code>: remove the target file before overwriting to prevent running processes (if any) from crashing.</li><li> bugfix: <code>./configure</code>: call "sh" explicitly for nginx's <code>./configure</code> script to prevent potential file permission issues.</li><li> optimize: now we use the C compiler option <code>-O2</code> for everything by default (we used to use <code>-O1</code> which is too conservative).</li><li> upgraded <a tiddlylink="PostgresNginxModule" refresh="link" target="_blank" title="External link to null#PostgresNginxModule" href="null#PostgresNginxModule" class="externalLink null">PostgresNginxModule</a> to 1.0rc4.<ul><li> bugfix: segmentation fault might happen in <code>ngx_destroy_pool</code> when debug logging was enabled in the nginx build. thanks buddy-ekb for the report.</li></ul></li><li> upgraded <a tiddlylink="EchoNginxModule" refresh="link" target="_blank" title="External link to null#EchoNginxModule" href="null#EchoNginxModule" class="externalLink null">EchoNginxModule</a> to 0.56.<ul><li> bugfix: our <code>create_loc_conf</code> callback did not return NULL on error. thanks Markus Linnala for the patch.</li><li> bugfix: reading <a target="_blank" title="External link to https://github.com/openresty/echo-nginx-module#echo_client_request_headers" href="https://github.com/openresty/echo-nginx-module#echo_client_request_headers" class="externalLink">$echo_client_request_headers</a> would return garbled data when LF instead of CRLF is used as the line terminator in the original header.</li><li> bugfix: reading <a target="_blank" title="External link to https://github.com/openresty/echo-nginx-module#echo_client_request_headers" href="https://github.com/openresty/echo-nginx-module#echo_client_request_headers" class="externalLink">$echo_client_request_headers</a> could lead to buffer overflow due to misuse of <code>r-&gt;header_end</code> while modules like ngx_fastcgi and ngx_proxy can change <code>r-&gt;header_end</code> to point to buffers of their own.</li></ul></li><li> upgraded <a tiddlylink="FormInputNginxModule" refresh="link" target="_blank" title="External link to null#FormInputNginxModule" href="null#FormInputNginxModule" class="externalLink null">FormInputNginxModule</a> to 0.10.<ul><li> bugfix: "pcre_exec -2" error might happen when the standard "if" directive is used to test the empty value nginx variables set by this module with a regex. (Jiale)</li><li> bugfix: we incorrectly overrode <code>r-&gt;read_event_handler</code> with <code>ngx_http_request_empty_handler</code> in our "post read" callback for client request body reading, which could waste CPU time in level-triggered event models like poll and select. thanks chen for the catch.</li></ul></li><li> upgraded <a tiddlylink="SetMiscNginxModule" refresh="link" target="_blank" title="External link to null#SetMiscNginxModule" href="null#SetMiscNginxModule" class="externalLink null">SetMiscNginxModule</a> 0.26.<ul><li> change: <a target="_blank" title="External link to https://github.com/openresty/set-misc-nginx-module#set_escape_uri" href="https://github.com/openresty/set-misc-nginx-module#set_escape_uri" class="externalLink">set_escape_uri</a>: use uppercase hexadecimal digits for percent-encoding as per RFC 3986. thanks splitice for the original patch.</li><li> bugfix: our <code>create_loc_conf</code> callback did not return NULL on error. thanks Markus Linnala for the patch.</li><li> bugfix: fixed source and test files' permission. they should not be executable at all. thanks Christos Kontas for the report.</li></ul></li><li> upgraded <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a> to v2.1-20140805: <a target="_blank" title="External link to https://github.com/openresty/luajit2/tags" href="https://github.com/openresty/luajit2/tags" class="externalLink">https://github.com/openresty/luajit2/tags</a><ul><li> imported Mike Pall's latest bug fixes:<ul><li> FFI: Fix <code>__index</code>/<code>__newindex</code> metamethod resolution for ctypes.</li><li> Invalidate backpropagation cache after DCE.</li></ul></li></ul></li><li> upgraded <a tiddlylink="LuaNginxModule" refresh="link" target="_blank" title="External link to null#LuaNginxModule" href="null#LuaNginxModule" class="externalLink null">LuaNginxModule</a> to 0.9.12.<ul><li> feature: implemented the SSL/TLS cosocket API.<ul><li> added new method <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#tcpsocksslhandshake" href="https://github.com/openresty/lua-nginx-module#tcpsocksslhandshake" class="externalLink">sslhandshake()</a> to the <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxsockettcp" href="https://github.com/openresty/lua-nginx-module#ngxsockettcp" class="externalLink">stream-typed cosocket</a> objects.</li><li> added new configuration directives <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_ssl_trusted_certificate" href="https://github.com/openresty/lua-nginx-module#lua_ssl_trusted_certificate" class="externalLink">lua_ssl_trusted_certificate</a>, <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_ssl_verify_depth" href="https://github.com/openresty/lua-nginx-module#lua_ssl_verify_depth" class="externalLink">lua_ssl_verify_depth</a>, <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_ssl_crl" href="https://github.com/openresty/lua-nginx-module#lua_ssl_crl" class="externalLink">lua_ssl_crl</a>, <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_ssl_protocols" href="https://github.com/openresty/lua-nginx-module#lua_ssl_protocols" class="externalLink">lua_ssl_protocols</a>, and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_ssl_ciphers" href="https://github.com/openresty/lua-nginx-module#lua_ssl_ciphers" class="externalLink">lua_ssl_ciphers</a>. thanks aviramc for the original patch.</li></ul></li><li> feature: the standard coroutine API is now enabled in the context of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#header_filter_by_lua" href="https://github.com/openresty/lua-nginx-module#header_filter_by_lua" class="externalLink">header_filter_by_lua*</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#body_filter_by_lua" href="https://github.com/openresty/lua-nginx-module#body_filter_by_lua" class="externalLink">body_filter_by_lua*</a>. thanks ngo for the request.</li><li> feature: for content/rewrite/access_by_lua_file directives, we now return 404 status code instead of 500 in case that the specified .lua file cannot be opened. thanks Sam Lee for the suggestion.</li><li> feature: added pure C API function for FFI-based implementation of reading <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxheaderheader" href="https://github.com/openresty/lua-nginx-module#ngxheaderheader" class="externalLink">ngx.header.HEADER</a>.</li><li> feature: now we also explicitly check the Lua ABI/language version in our feature test of the <code>./configure</code> phase for a usable Lua lib.</li><li> feature: added pure C API functions for FFI-based implementations of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxworkerpid" href="https://github.com/openresty/lua-nginx-module#ngxworkerpid" class="externalLink">ngx.worker.pid()</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxworkerexiting" href="https://github.com/openresty/lua-nginx-module#ngxworkerexiting" class="externalLink">ngx.worker.exiting()</a>.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqraw_header" href="https://github.com/openresty/lua-nginx-module#ngxreqraw_header" class="externalLink">ngx.req.raw_header()</a> could lead to buffer overflow and the "userdata length overflow" error due to misuse of <code>r-&gt;header_end</code> while modules like ngx_fastcgi and ngx_proxy can change <code>r-&gt;header_end</code> to point to buffers of their own. thanks sadmedved for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqraw_header" href="https://github.com/openresty/lua-nginx-module#ngxreqraw_header" class="externalLink">ngx.req.raw_header()</a> would return garbled data when LF instead of CRLF is used as the line terminator in the original header.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#body_filter_by_lua" href="https://github.com/openresty/lua-nginx-module#body_filter_by_lua" class="externalLink">body_filter_by_lua*</a>: reading <code>ngx.arg[1]</code> after clearing <code>ngx.arg[1]</code> (by assigning nil or "") could lead to segmentation faults. this regression had appeared in v0.9.10. thanks Jason Stangroome for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_worker_by_lua_file" href="https://github.com/openresty/lua-nginx-module#init_worker_by_lua_file" class="externalLink">init_worker_by_lua*</a> would conflict with some other nginx C modules (like ngx_proxy) when their <code>merge_loc_conf</code> callbacks (or alike) produce side-effects in <code>cf-&gt;cycle</code>. thanks Ruoshan Huang for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxsockettcp" href="https://github.com/openresty/lua-nginx-module#ngxsockettcp" class="externalLink">stream-typed cosocket</a> might read uninitialized memory bytes when logging errors due to sending to or receiving from a closed socket.</li><li> bugfix: the stream-typed and datagram-typed cosockets' resolver handler did not handle some special errors correctly.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxrespget_headers" href="https://github.com/openresty/lua-nginx-module#ngxrespget_headers" class="externalLink">ngx.resp.get_headers()</a>: sometimes we might omit the builtin-headers Content-Type, Content-Length, Connection, and Transfer-Encoding. thanks Jon Keys for the report.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqsocket" href="https://github.com/openresty/lua-nginx-module#ngxreqsocket" class="externalLink">ngx.req.socket(true)</a>: it incrrectly returned the error "chunked request bodies not supported yet" for raw request sockets with chunked request bodies. thanks Xiaofei Yang for the report.</li><li> bugfix: we did not check allocation failures while compiling the pattern for <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#tcpsockreceiveuntil" href="https://github.com/openresty/lua-nginx-module#tcpsockreceiveuntil" class="externalLink">tcpsock:receiveuntil()</a>. thanks Tatsuhiko Kubo for the patch.</li><li> bugfix: we did not use <code>lua_checkstack()</code> to prevent Lua stack overflow in our own C-land Lua backtrace generator.</li><li> bugfix: fixed an incorrect error message. thanks aviramc for the patch.</li><li> bugfix: for statically linked <a tiddlylink="LuaJIT" refresh="link" target="_blank" title="External link to null#LuaJIT" href="null#LuaJIT" class="externalLink null">LuaJIT</a>, we need to pass <code>-ldl</code> to the linker. thanks cf2012 for the report.</li><li> bugfix: the <a target="_blank" title="External link to http://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay" href="http://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay" class="externalLink">tcp_nodelay</a> directive configuration was not honored by upstream TCP cosockets, which could lead to extra delays for small messages. thanks Shun Zhang for reporting this issue.</li><li> bugfix: fixed build failures with OpenSSL older than 0.9.8f. thanks FFCZ for the report.</li><li> bugfix: compilation failed with nginx 1.3.6 or older. this regression had appeared in the v0.9.11 release.</li><li> bugfix: compilation failed with nginx 0.9.x.</li><li> bugfix: our <code>create_loc_conf</code> callback did not return NULL on error.</li><li> bugfix: added allocation failure check for <code>ngx_array_init()</code> on the C land. thanks Tatsuhiko Kubo for the patch.</li><li> optimize: we now cache the userdata metatable (for the <code>__gc</code> metamethod) in the lua registry for both the stream-typed datagram-typed cosockets.</li><li> optimize: reading <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxheaderheader" href="https://github.com/openresty/lua-nginx-module#ngxheaderheader" class="externalLink">ngx.header.HEADER</a>: eliminated dynamic allocations and data copying when there is no need to ransform "_" to "-" in the header name.</li><li> change: <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxescape_uri" href="https://github.com/openresty/lua-nginx-module#ngxescape_uri" class="externalLink">ngx.escape_uri()</a> now uses uppercase hexadecimal digits for percent-encoding according to the recommendation in RFC 3986. thanks Piotr Sikora for the suggestion.</li><li> change: use the type <code>ngx_http_lua_ffi_str_t</code> instead of <code>ngx_str_t</code> in the pure C API function <code>ngx_http_lua_ffi_req_get_headers</code>.</li><li> change: renamed the C macro <code>NGX_HTTP_LUA_NO_FFI_API</code> to <code>NGX_LUA_NO_FFI_API</code>.</li><li> style: various coding style fixes and minor optimizations from Tatsuhiko Kubo.</li><li> doc: documented the behavior of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#init_by_lua" href="https://github.com/openresty/lua-nginx-module#init_by_lua" class="externalLink">init_by_lua*</a> when <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#lua_code_cache" href="https://github.com/openresty/lua-nginx-module#lua_code_cache" class="externalLink">lua_code_cache</a> is off.</li><li> doc: fixed a wrong statement regarding <code>require()</code> in the "Lua Variable Scope" section. thanks Hungpu DU for the report.</li><li> doc: more clarification in the docs for the "res.truncated" flag returned by <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxlocationcapture" href="https://github.com/openresty/lua-nginx-module#ngxlocationcapture" class="externalLink">ngx.location.capture()</a>. thanks Jon Keys for asking.</li><li> doc: added missing method name "get_keys" under "ngx.shared.DICT" and also fixed the method order. thanks George Bashi for the patch.</li><li> doc: markdown: fixed the "Back to TOC" links for the sections ("Nginx API for Lua" and "Directives") with inlined TOC. thanks Pierre-Yves Gérardy and Simon Eskildsen for the reports.</li><li> doc: improved the wording in the "Lua Coroutine Yielding/Resuming" section. thanks Hungpu DU for the report.</li><li> doc: improved the wording of the documentation for <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxreqclear_header" href="https://github.com/openresty/lua-nginx-module#ngxreqclear_header" class="externalLink">ngx.req.clear_header()</a> to prevent ambiguity. thanks Christophe-Marie Duquesne for the report.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyCoreLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyCoreLibrary" href="null#LuaRestyCoreLibrary" class="externalLink null">LuaRestyCoreLibrary</a> to 0.0.9.<ul><li> feature: implemented the reading part of <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxheaderheader" href="https://github.com/openresty/lua-nginx-module#ngxheaderheader" class="externalLink">ngx.header.HEADER</a> with FFI.</li><li> feature: implemented <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxworkerpid" href="https://github.com/openresty/lua-nginx-module#ngxworkerpid" class="externalLink">ngx.worker.pid()</a> and <a target="_blank" title="External link to https://github.com/openresty/lua-nginx-module#ngxworkerexiting" href="https://github.com/openresty/lua-nginx-module#ngxworkerexiting" class="externalLink">ngx.worker.exiting()</a> with FFI.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyUpstreamHealthcheckLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyUpstreamHealthcheckLibrary" href="null#LuaRestyUpstreamHealthcheckLibrary" class="externalLink null">LuaRestyUpstreamHealthcheckLibrary</a> to 0.03.<ul><li> optimize: timers in different nginx worker processes can go out of phase as time goes, resulting in duplicate test requests from different workers in the same check interval. thanks fancyrabbit for the report and fix.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyWebSocketLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyWebSocketLibrary" href="null#LuaRestyWebSocketLibrary" class="externalLink null">LuaRestyWebSocketLibrary</a> to 0.04.<ul><li> feature: <a target="_blank" title="External link to https://github.com/openresty/lua-resty-websocket#restywebsocketclient" href="https://github.com/openresty/lua-resty-websocket#restywebsocketclient" class="externalLink">resty.websocket.client</a>: added support for the "origin" option to specify the value of the <code>Origin</code> request header. thanks woo for the original patch.</li><li> bugfix: <a target="_blank" title="External link to https://github.com/openresty/lua-resty-websocket#restywebsocketclient" href="https://github.com/openresty/lua-resty-websocket#restywebsocketclient" class="externalLink">resty.websocket.client</a>: connection pooling was broken due to duplicate websocket handshakes. thanks woo for the patch.</li><li> bugfix: fixed the <code>Sec-WebSocket-Protocol</code> header when the secondary protocols are specified. thanks woo for the report.</li><li> doc: typo fixes from Laurent Arnoud.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyDNSLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyDNSLibrary" href="null#LuaRestyDNSLibrary" class="externalLink null">LuaRestyDNSLibrary</a> to 0.13.<ul><li> bugfix: we did not parse the character-strings in the "TXT" record data. thanks Kevin Ingersoll for the report.</li></ul></li><li> upgraded <a tiddlylink="LuaRestyMySQLLibrary" refresh="link" target="_blank" title="External link to null#LuaRestyMySQLLibrary" href="null#LuaRestyMySQLLibrary" class="externalLink null">LuaRestyMySQLLibrary</a> to 0.15.<ul><li> feature: added new boolean-value options "ssl" and "ssl_verify" to the <a target="_blank" title="External link to https://github.com/openresty/lua-resty-mysql#connect" href="https://github.com/openresty/lua-resty-mysql#connect" class="externalLink">connect()</a> method connecting to MySQL via SSL.</li></ul></li><li> upgraded <a tiddlylink="LuaCjsonLibrary" refresh="link" target="_blank" title="External link to null#LuaCjsonLibrary" href="null#LuaCjsonLibrary" class="externalLink null">LuaCjsonLibrary</a> to 2.1.0.2.<ul><li> bugfix: the Makefile had a bug that overwrites the existing <code>cjson.so</code> file in place which could cause already running processes with this <code>.so</code> file loaded to crash. thanks ywsample for the report.</li></ul></li></ul>See <a tiddlylink="ChangeLog1007002" refresh="link" target="_blank" title="External link to null#ChangeLog1007002" href="null#ChangeLog1007002" class="externalLink null">ChangeLog1007002</a> for change log for <a tiddlylink="OpenResty" refresh="link" target="_blank" title="External link to null#OpenResty" href="null#OpenResty" class="externalLink null">OpenResty</a> 1.7.2.x.</description>
<link>null#ChangeLog1007004</link>
<pubDate>Fri, 10 Oct 2014 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>