Changes with Tengine 2.2.1 27 Sep 2017 *) Security: range filter protect from total size overflows. (CVE–2017–7529) (hongxiaolong) *) Feature: added ngx_slab_stat module to show shared memory statistics. (hongxiaolong) *) Feature: added rollback parameter for pipe to support roll back log file by time or file size. (MengqiWu) *) Feature: added dns cache to avoid tengine reload, start or stop etc failed when dns server is unavailable. (wangfakang) *) Feature: added sysguard_cpu to protect the system by monitoring the CPU usage. (wangfakang) *) Change: Range filter: avoid negative range start. (jinjiu) *) Change: updated ngx_slab from nginx-1.13.4 to enable slab slots and free pages statistics. (hongxiaolong) *) Change: update test cases: Nginx.pm and HTTP2.pm. (chobits) *) Change: HTTP/2 updates from nginx v1.9.8~1.11.6. (PeterDaveHello) *) Change: updated core document. (chobits) *) Change: remove the warning message when using deprecated system OpenSSL library on OS X. (chobits) *) Change: updated travis.yml configure. (PeterDaveHello) *) Bugfix: fixed "proxy_upstream_tries" number of retry backend is incorrect for lua subrequest. (wangfakang) *) Bugfix: fixed bug reuse_port and accept_mutex conflict. (gwtony) *) Bugfix: fixed bug when the worker_processes is set to auto caused reuse_port did not work. (wangfakang) *) Bugfix: fixed bug of used reuse_port caused nginx -t failed. (chobits) *) Bugfix: fixed bug of check return value of pipe module. (chobits) *) Bugfix: fixed check configure error. (chobits) *) Bugfix: fixed check aio configure option in auto/os/freebsd. (chobits) Changes with Tengine 2.2.0 29 Nov 2016 *) Security: a segmentation fault might occur in a worker process while writing a specially crafted request body to a temporary file (CVE-2016-4450) (0x7E) *) Feature: the "force_exit" directive. (aholic, chobits) *) Feature: debug pool module which can get memory usage of nginx memory pool. (chobits) *) Change: merged HTTP/2 module, SPDY module is removed. (PeterDaveHello) *) Change: official nginx syslog support, tengine syslog support is removed. *) Change: merged changes from nginx-1.8.1. (lhanjian, magicbear, chobits) *) Change: support for EPOLL_EXCLUSIVE. (cfsego) *) Change: export api: ngx_http_upstream_check_upstream_down. (detailyang) *) Change: disable "check_keepalive_requests" feature for TCP health check. (cynron) *) Change: updated reqstatus module. (cfsego) *) Bugfix: remove duplicate code in ngx_http_named_location (innomentats) *) Bugfix: fixed bug of session-sticky module. (detailyang) *) Bugfix: fixed bug of resolve.conf parser. (zuopucuen) *) Bugfix: fixed the compile warning of tfs module. (monadbobo) *) Bugfix: fixed a segmentation fault of dynamic_resolver feature when variable is used in proxy_pass directive. (chobits) *) Bugfix: fixed bug of invalid Set-Cookie value in session-sticky module. (YanagiEiichi) *) Bugfix: fixed bug of uninitialized 'cf' variable in dyups module. (wangfakang) *) Bugfix: fixed bug of duplicate peers in health check module. (FqqCS, taoyuanyuan) *) Bugfix: fixed bug of wrong javascript content-type in concat module. (IYism) Changes with Tengine 2.1.1 12 Aug 2015 *) Feature: support for dynamic upstream update. (yzprofile) *) Feature: enchanced ngx_http_reqstat_module. (cfsego) *) Feature: added ssl_verify_client_exception directive. (InfoHunter) *) Change: Reduced memory usage while parsing configuration. (ilexshen) *) Change: added $trim_bytes and $trim_original_bytes. (taoyuanyuan) *) Change: upgrade debian package to 2.1.0 (PeterDaveHello) *) Change: support for auto compile for ngx_http_spdy_module. (chobits) *) Change: updated SPDY/3.1. (chobits) *) Change: disabled 'proxy_request_buffering' for SPDY. (chobits) *) Change: added configue options to support set linker. (tanguofu) *) Bugfix: fixed Backport bug of SPDY (nginx official, ym) *) Bugfix: fixed compile error with SSL. (ym) *) Bugfix: fixed bug of reuseport. (monadbobo) Changes with Tengine 2.1.0 19 Dec 2014 *) Feature: support the SO_REUSEPORT option, to improve performance on multicore systems. (monadbobo) *) Feature: support for resolving upstream domain names on the fly. (InfoHunter) *) Feature: support for rewriting to named locations. (yzprofile) *) Feature: added two parameters 'crop_keepx' and 'crop_keepy' to the directive 'image_filter'. (Lax) *) Feature: support for saving SSL sessions in consistent_hash module and session_sticky module. (dinic) *) Feature: support for compiling Tengine automatically in travis-ci.org. (Jamyn) *) Feature: support for FastCGI health check. (yzprofile) *) Feature: enhanced sysguard module. (InfoHunter) *) Feature: added a variable '$normalized_request', to get normalized request URIs. (yunkai) *) Feature: added wildcard support for 'include' directive in 'dso' block. (monadbobo) *) Feature: added the 'gzip_clear_etag' directive. (taoyuanyuan) *) Feature: added the 'unprintable' parameter to the 'log_escape' directive. (skoo87) *) Change: merged changes from nginx-1.6.2. (cfsego, taoyuanyuan, chobits) *) Change: now the order of servers in an upstream are random when initialized. (taoyuanyuan) *) Change: slab allocator free pages defragmentation. (chobits) *) Bugfix: SPDY/3 dropped the "delayed" flag when finalizing connection. (chobits) *) Bugfix: fixed SPDY/3 connection leak. (chobits) *) Bugfix: now don't truncate value of key to 255 bytes in limit_req module. (chobits) *) Bugfix: failed to parse /etc/resolv.conf with IPv6 addresses. (lifeibo) *) Bugfix: upstream rbtree bugfix. (taoyuanyuan) Changes with Tengine 2.0.3 30 May 2014 *) Feature: added support for collecting the running status of Tengine according to specific key (domain, url, etc). (cfsego) *) Feature: added support for generating package of debian/ubuntu format(*.deb). (betetrpm, szepeviktmr) *) Change: merged changes between nginx-1.4.6 and nginx-1.4.7. (chobits) *) Change: optimized the parsing and searching strategy of upstream by using rbtree. (SarahWang) *) Change: updated the copyright. *) Bugfix: fixed bugs of session-sticky module. (dinic) *) Bugfix: fixed compiling and installing issues of DSO modules. (cfsego) *) Bugfix: fixed bugs of SPDY protocol. (chobits) Changes with Tengine 2.0.2 28 March 2014 *) Bugfix: send output queue after processing of read event in SPDY. (chobits) *) Bugfix: CVE-2014-0133 and CVE-2014-0088. (chobits) Changes with Tengine 2.0.1 06 March 2014 *) Feature: now non-buffering request body mechanism supports chunked input. (yaoweibin) *) Feature: trim module added more rules, and now can be enabled according to variables. (taoyuanyuan) *) Feature: resolver can be configured automatically from /etc/resolv.conf. (lifeibo, yaoweibin) *) Feature: added variables starting with "$ascii_", which can represent arbitrary ASCII characters. (yzprofile) *) Feature: added a new directive "image_filter_crop_offset". (lax) *) Change: merged changes between nginx-1.4.4 and nginx-1.4.6. (chobits, cfsego) *) Bugfix: upstream health check module failed occasionally when using keep-alive connections. (lilbedwin) *) Bugfix: nginx crashed when upstream rejected nginx WebSocket connection. http://trac.nginx.org/nginx/ticket/503 (Hao Chen) *) Bugfix: reduce nginx memory consumption when processing large files. (cfsego) *) Bugfix: disabled redirects to named locations if URI is not set. Changes with Tengine 2.0.0 08 Jan 2014 *) Feature: now DSO module does not need the original source code or compiler options when compiling a new module. (monadbobo) *) Feature: added support for SPDY v3, and SPDY/HTTP servers can listen on the same port. (lilbedwin、chobits) *) Feature: added support for setting retries for upstream servers (proxy, memcached, fastcgi, scgi, uwsgi). (supertcy) *) Feature: now tfs module can report access status to rcs while keepalive. (zhcn381) *) Feature: now the directive "if" supports ">", "<", ">=", "<=" operators for numeric comparison. (flygoast) *) Feature: now upstream health check module uses keep-alive connections. added a new directive "check_keepalive_requests". (lilbedwin) *) Feature: now trim module can handle SSI and ESI comments properly. (taoyuanyuan) *) Feature: now directive "expires_by_types" supports wildcard such as "text/*". (zhcn381) *) Feature: added variables starting with "$base64_decode_" to encode variables in base64. (yzprofile) *) Feature: added variables starting with "$md5_encode_" to encode variables in md5. (yzprofile) *) Feature: added a variable "$time_http" to get the current HTTP time. (flygoast) *) Feature: added a variable "$full_request" to get the original request URL with scheme and host. (yzprofile) *) Feature: added variables starting with "$escape_uri_" to escape variables into formal URL syntax. (yzprofile) *) Feature: added a variable "$raw_uri" to get the original URI without arguments. (flygoast) *) Feature: added support for logging subrequests in nanoseconds. (jinglong) *) Feature: added a new API function to encode URL into base64. (lilbedwin) *) Change: merged changes between nginx-1.2.9 and nginx-1.4.4. (cfsego) *) Change: now stub_status module does not log subrequests. (jinglong) *) Bugfix: fixed a bug in footer module when reading a response with a "Content-Encoding" header. (yaoweibin) *) Bugfix: fixed a bug when "client_body_postpone_size" is set to 0. (yaoweibin) *) Bugfix: fixed a compilation warning of Lua module. (diwayou) Changes with Tengine 1.5.2 22 Nov 2013 *) Security: a character following an unescaped space in a request line was handled incorrectly (CVE-2013-4547); the bug had appeared in 0.8.41. Thanks to Ivan Fratric of the Google Security Team. *) Bugfix: fix a bug that 'nodelay' might be ignored in limit_req module. (cfsego) *) Bugfix: fix a bug in trim module when processing JavaScript comment. (taoyuanyuan) Changes with Tengine 1.5.1 29 Aug 2013 *) Feature: added the directive 'retry_cached_connection' which could disable unconditional retries with a cached backend connection. (yaoweibin) *) Feature: added the argument of 'ncpu' to 'sysguard_load' directive. (yzprofile) *) Bugfix: fixed a bug in referer module that regex rules might be invalid with https requests. (lilbedwin) *) Bugfix: fixed a bug that the trim module might send a zero-size buffer. (taoyuanyuan) *) Bugfix: fixed a compile error when using the configure option '--without-dso'. (zhuzhaoyuan) *) Bugfix: fixed two compile warnings. (zzjin, diwayou) Changes with Tengine 1.5.0 31 Jul 2013 *) Feature: added ABI compatibility verification for DSO modules. (monadbobo) *) Feature: added non-buffering request body mechanism. Now the http proxy and fastcgi module can send requests to backend servers when it receives part of a request body. (yaoweibin) *) Feature: added trim module which can remove unnecessary white spaces and comments to reduce the size of a page. (taoyuanyuan) *) Feature: added the accept filter mechanism which supports to do some filter processing after accepting a new connection. (yzprofile) *) Feature: Now the server banner in a default error page can be replaced by the string specified in server_tag. (zhuzhaoyuan) *) Bugfix: fixed the bug of the 'buffer' argument might be ignored in the 'access_log' directive. (cfsego) *) Bugfix: fixed the session_sticky module didn't issue the session cookie in the direct mode. (dinic) Changes with Tengine 1.4.6 14 May 2013 *) Bugfix: merged the changes of Nginx-1.2.9 and fixed the security problem CVE-2013-2070. This bug had appeared in 1.4.0. (yaoweibin) Changes with Tengine 1.4.5 1 May 2013 *) Feature: added the consistent_hash module which dispatches requests to upstream servers based on consistent hashing algorithm of a variable specified. (dinic) *) Feature: added the "keepalive_timeout" directive to set timeout for the upstream keepalive connections. (jinglong) *) Feature: now the configure script supports compilation of all modules to be shared or static. (monadbobo) *) Change: updated the Lua module to 0.7.19. (jinglong) *) Change: merged the changes of Nginx-1.2.8. (yaoweibin) *) Bugfix: fixed the compile warnings of syslog and upstream_check modules in GCC-4.4.5. (magicbear) Changes with Tengine 1.4.4 21 Mar 2013 *) Feature: added the session_sticky module by using which one client can be always served by the same upstream server. (dinic) *) Feature: now the sysguard module can protect the server based on the amount of free memory. (lifeibo) *) Feature: added support for geoip regional database in geoip module. (jasonlfunk) *) Feature: log_empty_request can also disable the logs for timeout (408) empty request. (yaoweibin) *) Change: merged changes between Nginx-1.2.5 and Nginx-1.2.7. (cfsego) *) Change: CPU affinity is off by default now. (cfsego) *) Bugfix: fixed a bug that sysguard and upstream_check module didn't compile on Solaris 11. (lifeibo, yaoweibin) *) Bugfix: fixed a bug with TFS module that it might return bad values. (zhcn381) *) Bugfix: fixed a bug with TFS module that it might corrupt large files. (zhcn381) Changes with Tengine 1.4.3 21 Jan 2013 *) Feature: added the TFS module which provides a RESTful API to Taobao File System. (zhcn381, monadbobo) *) Feature: added a $sent_cookie_XXX variable which could be used to get the value of cookie XXX from the Set-Cookie headers. (skoo87) *) Feature: now the syslog logging supports host name and domain name as its destination address. (cfsego) *) Change: added an attribute 'id' for the server directive in the upstream block. (yaoweibin) *) Bugfix: fixed a bug of DSO module which might stop Tengine from reloading. (monadbobo) *) Bugfix: fixed a segmentation fault bug of upstream_check module when the check timeout was larger than the check interval. (yaoweibin) *) Bugfix: fixed a segmentation fault bug of user_agent module when there was no User-Agent header existed in a request. (dinic) *) Bugfix: fixed the bug that sysguard module didn't work on Mac OS. (lizi) Changes with Tengine 1.4.2 22 Nov 2012 *) Feature: added the option '--dso-tool-path' to configure script, which can specify the installation path for the dso_tool script. (monadbobo) *) Feature: added a new variable '$unix_time', whose value is the current number of seconds since unix epoch time. (yaoweibin) *) Feature: added the 'make test' target to run test cases. (yaoweibin) *) Feature: now the sysguard module can be used in a location block. (lifeibo) *) Change: merged the changes from Nginx-1.2.4 and Nginx-1.2.5. (zhuzhaoyuan) *) Change: now checks the error codes of input body filters more carefully to avoid socket leaks. (cfsego) *) Bugfix: fixed the problem with directive limit_req can't handle 4 arguments. (monadbobo) Thanks to LazyZhu. *) Bugfix: fixed a compilation error with the file of sysinfo in Cygwin. (lifeibo) Thanks to Cao Peiran. *) Bugfix: now the installation script will copy the user_agent module's configuration. (monadbobo) Thanks to Jianbin Xiao. *) Bugfix: fixed the installation directory error with the DSO module when creating the RPM package. (monadbobo) Thanks to Jianbin Xiao and Ren Xiaolei. Changes with Tengine 1.4.1 10 Oct 2012 *) Feature: added jemalloc library support. (fanjizhao) *) Feature: added a new variable '$dollar', whose value is the dollar sign ('$'). (zhuzhaoyuan) *) Feature: added the option 'off' to 'worker_cpu_affinity' directive. (cfsego) *) Change: disable CPU affinity when a new worker process is forked as an old one exits abnormally. (cfsego) *) Bugfix: fixed compile error with shared Lua module when using LuaJIT in Mac OS. (monadbobo) *) Bugfix: fixed the wrong module execution order with the third party shared filter module. (monadbobo) Changes with Tengine 1.4.0 05 Sep 2012 *) Feature: added the dynamic module loading support (a.k.a. DSO), so we don't have to recompile tengine when we want to add a new module. (monadbobo) *) Feature: updated the Lua module to the latest stable version. (chaoslawful, agentzh, jinglong) *) Feature: added json and csv format output for the upstream_check module. (yaoweibin) *) Feature: added the 'log_empty_request' directive which could be used to turn off logs from a connection without HTTP data. (zhuzhaoyuan) *) Feature: added the 'concat_delimiter' directive to the concat module to allow adding delimiter between each file. (dinic) *) Feature: added the 'concat_ignore_file_error' directive to ignore file errors and the syntax of concat is less strict now. (dinic) *) Feature: added the 'default' option to the 'error_page' directive to set all error pages to default values. (jinglong) *) Feature: added the 'priority' directive of the procs module. (yzprofile) *) Feature: added the 'delay_start' directive of the procs module. (yzprofile) *) Change: merged changes from nginx-1.2.3. (zhuzhaoyuan) *) Bugfix: fixed a segmentation fault bug of the geo module when 'range' was set without default value. (yzprofile) *) Bugfix: fixed a segmentation fault bug with the procs module. (yzprofile) *) Bugfix: fixed a socket leak bug when upstream_check was enabled. (yaoweibin) *) Bugfix: fixed some bugs of the limit_req module. (monadbobo) *) Bugfix: fixed wrong format types with error logs. (yaoweibin) *) Bugfix: fixed a compile error if the perl module was used with procs. (yzprofile) Changes with Tengine 1.3.0 25 May 2012 *) Feature: added the Lua module which embeds the power of Lua into Tengine. (chaoslawful, agentzh) *) Feature: added the procs module which provides a mechanism to support standalone processes. (yzprofile) *) Change: renamed the parameter from 'nongreedy' to 'greedy' in the user_agent module. (dinic) *) Bugfix: fixed a segmentation fault bug in syslog with uninitialized pointer problem. (cfsego) *) Bugfix: fixed a compile error in syslog with '--with-ipv6' configuration parameter. (cfsego) Changes with Tengine 1.2.5 09 May 2012 *) Feature: added the upstream_check module which could be used to do proactive health check of upstream servers. (yaoweibin) *) Feature: now allow to specify program identifiers with syslogs. (cfsego) *) Change: merged changes between nginx-1.0.14 and nginx-1.0.15. (zhuzhaoyuan) *) Change: the default value of 'accept_mutex_delay' was changed from 500ms to 100ms to gain better performance. (zhuzhaoyuan) *) Bugfix: fixed a segmentation fault bug in syslog when failed to connect to an upstream server. (cfsego) *) Bugfix: fixed the bug of 'access_log' might not be compatible with the 'buffer' parameter. (cfsego) Changes with Tengine 1.2.4 30 Mar 2012 *) Feature: added the user_agent module. (dinic) *) Feature: added the 'log_escape' directive. (agentzh, skoo87) *) Change: merged changes between nginx-1.0.12 and nginx-1.0.14. (zhuzhaoyuan) *) Bugfix: fixed a bug in the limit_req module. (liseen.wan) *) Bugfix: fixed a bug in subrequest. (lifeibo) Changes with Tengine 1.2.3 27 Feb 2012 *) Feature: added the 'request_time_cache' directive to get more precise $request_time/$request_time_msec/$request_time_usec. (yzprofile) *) Feature: added the slice module. (zhuzhaoyuan) *) Change: merged changes between nginx-1.0.11 and nginx-1.0.12. (zhuzhaoyuan) *) Change: deleted unused browsers detection. (zhuzhaoyuan) *) Bugfix: fixed a bug in upstream when reading header. (lifeibo) *) Bugfix: fixed a bug in 'expires_by_types'. (lifeibo) Changes with Tengine 1.2.2 11 Jan 2012 *) Feature: added the input body filter mechanism. (cfsego) *) Feature: added SSL dialog support to the mail module. (cfsego) *) Change: merged changes between nginx-1.0.10 and nginx-1.0.11. (zhuzhaoyuan) *) Change: turned 'lingering_close' off by default. (zhuzhaoyuan) *) Bugfix: fixed a bug in pipe logs. (cfsego) *) Bugfix: fixed a 'forbid_action' bug in the limit_req module. (monadbobo) *) Bugfix: fixed a bug in 'backtrace_max_stack_size'. (monadbobo) *) Bugfix: fixed a bug in the footer module when output body is empty. (dinic) *) Bugfix: fixed the last hostname letter omitted bug in syslog. (cfsego) Changes with Tengine 1.2.1 06 Dev 2011 *) Bugfix: fixed a segmentation fault bug when using default error log or access log. (yzprofile) Changes with Tengine 1.2.0 29 Nov 2011 *) This is the first public release. *) Feature: added syslog support to error_log and access_log. (cfsego) *) Feature: added pipe support to error_log and access_log. (cfsego) *) Feature: added realloc() related APIs. (gongyuan) *) Feature: added time specific variables. (skoo87) *) Feature: added the backtrace module. (monadbobo) *) Feature: added whitelist support to the limit_req module. (monadbobo) *) Feature: now more limit_req directives are allowed in a single location. (monadbobo) *) Feature: added the sysguard module. (lifeibo) *) Feature: added two APIs, ngx_http_header_in and ngx_http_header_out. (lifeibo) *) Feature: added two variables, $request_time_msec and $request_time_usec. (jinglong) *) Feature: added the footer module. (yunxing) *) Feature: added the $conn_requests variable which is similar to Apache's '%K'. (lieyuan) *) Feature: added the $host_comment variable. (yunxing) *) Feature: added a 'ratio' parameter to access_log so now access log can be sampled. (cfsego) *) Feature: added the 'server_info' and 'server_admin' directives to show more information when 4xx/5xx errors encountered. (lieyuan) *) Feature: added the '-d' command line option to dump contents of the configuration files. (piaoling) *) Feature: added response time statistics to the stub_status module. (jinglong) *) Feature: added the 'server_tag' directive. (zhuzhaoyuan) *) Feature: now the 'worker_processes' supports the 'auto' parameter, which sets the worker process numbers to the cores automatically. (cfsego) *) Feature: now the 'worker_cpu_affinity' directive supports the 'auto' parameter, which binds the worker processes to the cores automatically. (cfsego) *) Feature: added the 'ssl_pass_phrase_dialog' directive. (cfsego) *) Feature: added the '-s start' command line option. (zhuzhaoyuan) *) Feature: added '-m' command line option to list all compiled-in modules. (zhuzhaoyuan) *) Feature: added the 'expires_by_types' directive. (lifeibo) *) Feature: added the '-l' command line option to list all supported directives. (dinic) *) Feature: added the ngx_atoll() API, which can convert a string to a long long integer (64 bits). (lifeibo) *) Feature: now status lines (302, 405) are RFC-2616 compatibale. (zhuzhaoyuan) *) Feature: now ngx_escape_uri/ngx_unescape_uri supports encoding/decoding style of Java and PHP. (zhuzhaoyuan) *) Feature: now configuration files included are sorted. (zhuzhaoyuan) *) Feature: now 'error_page' can be reset to 'default' (zhuzhaoyuan) *) Change: turned 'msie_padding' off by default. (zhuzhaoyuan) *) Bugfix: fixed a bug when subrequest_in_memory and upstream keepalive being used. (lifeibo) *) Bugfix: fixed a bug in $sent_http_connection and $sent_http_keep_alive. (zhongsheng) *) Bugfix: fixed a bug that error_page directive can't detect duplicate codes and inherited correctly. (zhuzhaoyuan) *) Bugfix: fixed a segmentation fault bug in the FastCGI module, while processing duplicated HTTP headers. (monadbobo) *) Bugfix: fixed a bug that file in open_file_cache can't be updated. (cfsego) *) Bugfix: fixed a bug in 'worker_cpu_affinity'. (cfsego)