OpenResty 1.7.7.1 发布,基于 Nginx 的应用服务器

jopen 9年前

OpenResty 1.7.7.1 发布,

OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。

通过众多进行良好设计的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程,构建出可以处理一万以上并发请求的极端高性能的 Web 应用。

OpenResty 致力于将你的服务器端应用完全运行于 Nginx 服务器中,充分利用 Nginx 的事件模型来进行非阻塞 I/O 通信。不仅仅是和 HTTP 客户端间的网络通信是非阻塞的,与MySQL、PostgreSQL、Memcached、以及 Redis 等众多远方后端之间的网络通信也是非阻塞的。

因为 OpenResty 软件包的维护者也是其中打包的许多 Nginx 模块的作者,所以 OpenResty 可以确保所包含的所有组件可以可靠地协同工作。

该版本完整改进记录包括:

  • upgraded the Nginx core to 1.7.7.

  • bugfix: applied a patch to the nginx core to fix the memory invalid reads when exceeding the pre-configured limits in an ngx_hash_t hash table.

  • bugfix: applied a patch to the nginx core to fix a memory invalid read regression introduced in nginx 1.7.5+'s resolver.

  • ./configure: usage text: renamed --with-luajit=PATH to --with-luajit=DIR. thanks Dominic for the suggestion.

  • feature: ./configure: added the default prefix value to the usage text.

  • upgraded LuaJIT to v2.1-20141128:  https://github.com/openresty/luajit2/tags

    • feature: FFI: added ffi.typeinfo(). thanks to Peter Colberg.

    • 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).

    • bugfix: FFI: no meta fallback when indexing pointer to incomplete struct.

    • bugfix: fixed fused constant loads under high register pressure.

    • bugfix: fixed DragonFly build (unsupported). thanks to Robin Hahling, Alex Hornung, and Joris Giovannangeli.

    • bugfix: FFI: fixed initialization of unions of subtypes. thanks to Peter Colberg.

    • bugfix: FFI: Fix for cdata vs. non-cdata arithmetic and comparisons. thanks to Roman Tsisyk.

    • optimize: eliminated hmask guard for forwarded HREFK.

    • imported Mike Pall's latest changes:

    • debugging: added an (expensive) assertion to check GC objects in current stack upon trace exiting. thanks Mike Pall. only enabled when building with -DLUA_USE_ASSERT.

  • upgraded LuaNginxModule to 0.9.13.

    • optimize: reduced the pool size of a fake connection from the default pool size (16KB) to 128B, affecting init_worker_by_lua and ngx.timer.at.

    • optimize: made fake requests share their connection pools, affecting init_worker_by_lua and ngx.timer.at.

    • 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.

    • 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.

    • feature: ngx.flush(true) 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.

    • feature: ngx.flush(true) can now wait on delayed events due to nginx's limit_rate config directive or $limit_rate variable settings. thanks Shafreeck Sea for the original patch.

    • bugfix: ngx.flush(), ngx.eof(), and some other things did not update busy/free chains after calling the output filters.

    • bugfix: ngx_gzip/ngx_gunzip module filters might cause ngx.flush(true) to hang until timeout for nginx 1.7.7+ (and some other old versions of nginx). thanks Maxim Dounin for the help.

    • bugfix: ngx.get_phase() did not work in the context of init_worker_by_lua*.

    • bugfix: use of ngx.flush(true) with the limit_rate config directive or the $limit_rate variable may hang the request forever for large volumn of output data. thanks Shafreeck Sea for the report.

    • bugfix: compilation error when PCRE is disabled in the nginx build. thanks Ivan Cekov for the report.

    • bugfix: when syslog was enabled in the error_log directive for nginx 1.7.1+, use of init_worker_by_lua or ngx.timer.at() would lead to segmentation faults. thanks shun.zhang for the report.

    • 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.

    • bugfix: ngx.req.raw_header(): buffer overflow and the "buffer error" exception might happen for massively pipelined downstream requests. thanks Dane Knecht for the report.

    • bugfix: ngx.req.raw_header(): we might change nginx's internal buffer pointers, which might cause bad side-effects.

    • doc: added a new section, Cocockets Not Available Everywhere, under the Known Issues section.

  • upgraded LuaRestyDNSLibrary to 0.14.

    • feature: added support for the SPF record type specified by RFC 4408. thanks Tom Fitzhenry for the patch.

  • upgraded LuaRestyLrucacheLibrary to 0.03.

    • feature: the get() method now also returns the stale value as the second returned value if available.

  • upgraded LuaRestyLockLibrary to 0.04.

    • bugfix: the shared dictionary would incorrectly get unref'd for multiple times when the lock() and/or unlock() methods are called more than once. thanks Peng Wu for the report and Dejiang Zhu for the patch.

  • upgraded EchoNginxModule to 0.57.

  • upgraded DrizzleNginxModule to 0.1.8.

    • bugfix: fixed compilation error with nginx 1.7.5+ because nginx 1.7.5+ changes the API in the events subsystem.

  • upgraded PostgresNginxModule to 1.0rc5.

    • bugfix: fixed compilation error with nginx 1.7.5+ because nginx 1.7.5+ changes the API in the events subsystem.

  • upgraded CoolkitNginxModule to 0.2rc2.

    • bugfix: compilation failed when PCRE was disabled in the nginx build.

    • feature: added the "$location" variable, by Piotr Sikora.

  • upgraded SetMiscNginxModule to 0.27.

    • bugfix: bugfix: fixed build failure when --with-mail_ssl_module is specified while --with-http_ssl_module is not. thanks Xiaochen Wang for the report.

    </ul>