Hi, folks!
I’m happy to announce that the new stable release of ngx_openresty,
1.0.8.26, has just been kicked out of door:
This is the first stable release of ngx_openresty that is based on the
Nginx core 1.0.8. And this is a big release with a lot of bug fixes
and
new features.
Special thanks go to all our contributors and users to help make this
happen over the last month
Here goes the complete change log for this release, as compared to the
last
stable release, 1.0.6.22, released nearly a month ago:
- upgraded the Nginx core to 1.0.8.
- upgraded LuaNginxModule to 0.3.1rc23.
- feature: added new directive lua_shared_dict:
Lua | NGINX - feature: added Lua API for the shm-based dictionary:
Lua | NGINX - feature: now we apply the patch to the nginx core so as to allow
main request body modifications. - feature: added new Lua API ngx.req.set_body_file():
Lua | NGINX - feature: added new Lua API ngx.req.set_body_data():
Lua | NGINX - feature: added new Lua functions ngx.req.read_body(),
ngx.req.discard_body(), ngx.req.get_body_data(), and
ngx.req.get_body_file(). see the docs here:
Lua | NGINX - feature: now we implemented ngx.req.set_uri() and
ngx.req.set_uri_args() to emulate ngx_rewrite’s rewrite directive
(without redirect or permanent modifiers). thanks Vladimir
Protasov
(utros) and Nginx U… - feature: added constant ngx.HTTP_METHOD_NOT_IMPLEMENTED (501).
thanks Nginx U… - feature: now for HTTP 1.0 requests, we disable the automatic
full
buffering mode if the user sets the Content-Length response header
before sending out the headers. this allows streaming output for
HTTP 1.0
requests if the content length can be calculated beforehand.
thanks Li Ziyi. - bugfix: now we properly support setting the Cache-Control
response
header via the ngx.header.HEADER interface. - bugfix: no longer set header hash to 1. use the
ngx_hash_key_lcinstead. - bugfix: now we skip rewrite phase Lua handlers altogether if
ngx_rewrite’s rewrite directive issue a location re-lookup by
changing URIs (but not including rewrite … break). thanks Nginx
User. - bugfix: fixed hanging issues when using ngx.exec() within
rewrite_by_lua and access_by_lua. thanks Nginx U. for reporting
it. - bugfix: lua_need_request_body should not skip requests with
methods
other than POST and PUT. thanks Nginx U… - bugfix: ndk.set_var.DIRECTIVE had a memory issue and might pass
empty argument values to the directive being called. thanks
dannynoonan. - bugfix: no longer free request body buffers that are not
allocated
by ourselves. - bugfix: now we allow setting ngx.var.VARIABLE to nil.
- bugfix: now we explicitly clear all the modules’ contexts before
dump to named location with ngx.exec. thanks Nginx U…
- feature: added new directive lua_shared_dict:
- upgraded EchoNginxModule to 0.37rc7.
- bugfix: fixed a memory issue in both echo_sleep and
echo_blocking_sleep: we should not pass ngx_str_t strings to
atof()which expects C strings. - bugfix: now we explicitly clear all the modules’ contexts before
dump to named location with echo_exec. - bugfix: bugfix: echo_exec may hang when running after
echo_sleep(or other I/O interruption calls): we should have called
ngx_http_finalize_request on NGX_DONE to decrement
r->main->countanyway. - bugfix: now we properly set the Content-Length request header
for
subrequests.
- bugfix: fixed a memory issue in both echo_sleep and
- upgraded SrcacheNginxModule to 0.13rc2.
- feature: implemented response status line and general response
header cachin and added new directives srcache_store_hide_header
and
srcache_store_pass_header to control which headers to cache and
which
not. - feature: added new directive srcache_response_cache_control to
control whether honor response headers Cache-Control and Expires,
default on. - feature: we disable srcache_store automatically by default
when Cache-Control:
max-age=0 and Expires: are seen. - feature: implemented builtin nginx variable $srcache_expire for
automatic expiration time calculation based on response headers
Cache-Control (max-age) and Expires; also added new directives
srcache_max_expire and srcache_default_expire. - feature: implemented the srcache_store_no_cache directive; now
by
default, we do not store responses with the header Cache-Control:
no-cache into the cache. - feature: implemented the srcache_store_no_store directive
(default
off). Now by default, responses with the header Cache-Control:
no-store will not be stored into the cache. - feature: implemented the srcache_store_private directive to
control
whether to store responses with the header Cache-Control: private. - feature: implemented the srcache_request_cache_control directive
to
allow request headers Cache-Control: no-cache or Pragma: no-cache
to
force bypassing cache lookup. it also honors the request header
Cache-Control:
no-store. this directive is turned off by default. - feature: now we check response header Content-Encoding by
default
and a non-empty header value will skip srcache_store; also
introduced
a new directive named srcache_ignore_content_encoding to ignore
this
response header. - feature: implemented the srcache_methods directive to specify
request methods that are cacheable, by default, only GET and HEAD
are
cacheable. - bugfix: we no longer set header hash to 1; we use
ngx_hash_key_lcinstead. - bugfix: when we skip srcache_fetch by means of
srcache_fetch_skip,
we should not automatically skip srcache_store. - bugfix: now we ignore the Content-Length header (if any) of the
main request for the subrequests. - bugfix: there might be a segfault when failing to allocate
memory
in ngx_http_srcache_add_copy_chain. thanks Shaun savage. - feature: implemented new directive srcache_store_statuses to
allow
the user to specify the response status code list that is to be
stored into
the cache. - bugfix: we now only cache 200, 301, and 302 responses by
default.
- feature: implemented response status line and general response
- upgraded IconvNginxModule to 0.10rc5.
- bugfix: fixed -Wset-but-not-used warnings issued by gcc 4.6.0.
thanks Zhi Jiale (Calio).
- bugfix: fixed -Wset-but-not-used warnings issued by gcc 4.6.0.
- upgraded HeadersMoreNginxModule to 0.16rc3.
- bugfix: we should set header hash using ngx_hash_key_lc, not
simply
to 1. - bugfix: fixed setting Cache-Control response headers. we should
properly prepare the r->cache_control array as well.
- bugfix: we should set header hash using ngx_hash_key_lc, not
- upgraded RdsJsonNginxModule to 0.12rc6.
- bugfix: fixed compatibility with nginx 1.1.4+.
- upgraded RdsCsvNginxModule to 0.04.
- bugfix: fixed compatibility issues with nginx 1.1.4+.
- optimization: now we only register our filters when rds_csv is
actually used in nginx.conf.
- upgraded Redis2NginxModule to 0.08rc1.
- bugfix: fixed compatibility with nginx 1.1.4+.
- upgraded DrizzleNginxModule to 0.1.2rc2.
- bugfix: fixed compatibility with nginx 1.1.4+
- upgraded MemcNginxModule to 0.13rc1.
- bugfix: fixed compatibility with nginx 1.1.4+.
- upgraded SetMiscNginxModule to v0.22rc3.
- minor code cleanup.
- applied the patch to the Nginx core that always clears all modules’
contexts in ngx_http_named_location. - applied the patch for the variable-header-ignore-no-hash issue. see
[PATCH] Ignore response header entries with zero hash in ngx_http_varaible_headers for details.
As always, you’re welcome to report bugs and feature requests either
here
or directly to me
It’ll also be highly appreciated to try out the devel releases (based on
the Nginx core 1.0.9+) that are coming out later
OpenResty (aka. ngx_openresty) is a full-fledged web application server
by
bundling the standard Nginx core, lots of 3rd-party Nginx
moduleshttp://wiki.nginx.org/3rdPartyModules,
as well as most of their external dependencies.
By taking adantage of various well-designed Nginx modules, OpenResty
effectively turns the nginx server into a powerful web app server, in
which
the web developers can use the Lua programming language to script
various
existing nginx C modules and Lua modules and construct extremely
high-performance web applications that is capable to handle 10K+
connections.
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.
You can find more details on the homepage of ngx_openresty here:
http://openresty.org
Have fun!
-agentzh