How to pass the real client IP addresses to backend servers via special request headers
ChangeLog 1.5.8Yichun Zhang , 11 Jan 2014 (created 10 Jan 2014)
Mainline Version 220.127.116.11 - 10 January 2014
- change: now we default to LuaJIT instead of the standard Lua 5.1
./configureis now the default. To use the standard Lua 5.1 interpreter, specify the
--with-lua51option explicitly. thanks smallfish for the suggestion.
- bugfix: Nginx's built-in resolver did not accept fully qualified domain names (with a trailing dot).
- optimize: shortened the
Serverresponse header string "ngx_openresty" to "openresty".
- upgraded the Nginx core to 1.5.8.
- see the changes here: http://nginx.org/en/CHANGES
- upgraded LuaJIT to v2.1-20140109.
- bugfix: fixed ABC (Array Bounds Check) elimination. (Mike Pall)
- bugfix: fixed MinGW build. (Mike Pall)
- bugfix: x86: fixed stack slot counting for IR_CALLA (affects table.new). (Mike Pall) this could lead to random table field missing issues in Lua Resty MySQL Library on i386. thanks lhmwzy for the report.
- bugfix: fixed compilation of
string.byte(s, nil, n). (Mike Pall)
- bugfix: MIPS: Cosmetic fix for interpreter. (Mike Pall)
- upgraded Lua Nginx Module to 0.9.4.
- feature: allow use of ngx.exit() in the context of header_filter_by_lua* to perform a "filter finalization". but in this context ngx.exit() is an asynchronous operation and returns immediately.
- feature: added the optional 5th argument, "res_table", to ngx.re.match() which is the user-supplied result table for the resulting captures. This feature can give 12%+ speedup for simple ngx.re.match() calls with 4 submatch captures.
- feature: ngx.escape_uri() and ngx.unescape_uri() now accept a
nilargument, which is equivalent to an empty string.
- feature: added new pure C API,
ngx_http_lua_ffi_max_regex_cache_size, for FFI-based implementations like Lua Resty Core Library.
- change: ngx.decode_base64() now only accepts string arguments.
- bugfix: coroutines might incorrectly enter the "dead" state even right after creation with coroutine.create(). thanks James Hurst for the report.
- bugfix: segmentation fault might happen when aborting a "light thread" pending on downstream cosocket writes. thanks Aviram Cohen for the report.
- bugfix: we might try sending the response header again in ngx.exit() when the header was already sent.
- bugfix: subrequests initiated by ngx.location.capture() might send their own response headers more than once. this issue might also lead to the alert message "header already sent" and request aborts when nginx 1.5.4+ was used.
- bugfix: fixed incompatibilities in Nginx 1.5.8 which breaks the resolver API in the Nginx core.
- bugfix: fixed a compilation warning when PCRE is disabled in the build. thanks Jay for the patch.
- bugfix: we did not set the shortcut fields in
r->headers_infor request headers in our subrequests created by ngx.location.capture*(), which might cause inter-operative issues with other Nginx modules. thanks Aviram Cohen for the original patch.
- optimize: we no longer clear the
lua_Statepointers for dead "light threads" such that their coroutine context structs could be reused by other "light threads" and user coroutines. this can lead to smaller memory footprint.
- doc: documented that the coroutine.* API can be used in init_by_lua* since 0.9.2. thanks Ruoshan Huang for the reminder.
- upgraded Lua Resty Memcached Library to 0.13.
- optimize: saved one cosocket receive() call in the get() and gets() methods.
- bugfix: the Memcached connection might enter a bad state when read timeout happens because Lua Nginx Module's cosocket reading calls no longer automatically close the connection in this case. thanks Dane Knecht for the report.
- upgraded Lua Resty Redis Library to 0.18.
- optimize: eliminated one (potentially expensive)
string.sub()call in the Redis reply parser.
- bugfix: the Redis connection might enter a bad state when read timeout happens because Lua Nginx Module's cosocket reading calls no longer automatically close the connection in this case.
- optimize: eliminated one (potentially expensive)
- upgraded Lua Resty Lock Library to 0.02.
- bugfix: the lock() method accepted nil keys silently.
- upgraded Lua Resty DNS Library to 0.11.
- upgraded Lua Resty Core Library to 0.0.3.
- feature: updated to comply with Lua Nginx Module 0.9.4.
- bugfix: resty.core.regex: the ngx.re API did not honour the lua_regex_cache_max_entries configuration directive.
- optimize: ngx.re.gsub used to use literal type string "const char *" in ffi.cast() which is expensive in interpreter mode. now we use the ctype object directly, which leads to 11% speedup in interpreter mode.
- upgraded Echo Nginx Module to 0.51.
- bugfix: for Nginx 1.2.6+ and 1.3.9+, the main request reference count might go out of sync when Nginx's request body reader returned status code 300+. thanks Hungpu DU for the report.
- bugfix: echo_request_body truncated the response body prematurely when the request body was in memory (because the request reader sets "last_buf" in this case). thanks Hungpu DU for the original patch.
- bugfix: using $echo_timer_elapsed variable alone in the configuration caused segmentation faults. thanks Hungpu DU for the report.
- doc: typo fix in the echo_foreach_split sample code. thanks Hungpu DU for the report.
- upgraded Drizzle Nginx Module to 0.1.7.
- bugfix: fixed most of warnings and errors from the Microsoft Visual C++ compiler, reported by Edwin Cleton.
- upgraded Headers More Nginx Module to 0.25.
- bugfix: fixed a warning from the Microsoft C compiler. thanks Edwin Cleton for the report.
- doc: documented the limitation that we cannot remove the "Connection" response header with this module. thanks Michael Orlando for bringing this up.
- upgraded Set Misc Nginx Module to 0.24.
- bugfix: fixed the warnings from the Microsoft C compiler. thanks Edwin Cleton for the report.
- upgraded Srcache Nginx Module to 0.25.
- feature: now the value specified in srcache_store_skip is evaluated and tested again right after the end of the response body data stream is seen. thanks Eldar Zaitov for the patch. See ChangeLog 1.4.3 for change log for OpenResty 1.4.3.x.