Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tengine-2.3.0 will be released ! [Porting the official Nginx-1.15.9 ] #1196

Closed
wangfakang opened this issue Mar 2, 2019 · 16 comments
Closed
Labels
release discussion of new release
Milestone

Comments

@wangfakang
Copy link
Collaborator

wangfakang commented Mar 2, 2019

Hi all, we have merged nginx 1.15.9 into latest master. Please check it! We'll release new version 2.3.x (based on nginx 1.15.x) as soon. Please check WARNING list before upgrade. If have any questions, please give us feedback in time. Thank you.

WARNING

Tengine has been upgraded core files from the Nginx 1.15.9 version. Note that this version is slightly not backwards compatible, some tengine features has been replaced by nginx offical, check the following list:

  1. Removed reuse_port directive implemented by Tengine and use the official reuseport of Nginx, detailed reference document .
  2. Removed dso_tool tool and dso directive, If before using Tengine dso feature, you could switch to the Nginx official load_module directive, detailed reference document1document2 .
  3. Moved the slice module into modules dir, use the Nginx official slice feature by default and use --add-module=modules/ngx_http_slice_module way to compile if need Tengine's slice module, otherwise use --with-http_slice_module compilation parameter.
  4. Extract the tengine modules to modules dir, if you need to use that module then use --add-module=modules/<module_name> way to compile.
  5. The request counting logic for limit_req is consistent with the Nginx official, removed the logic that skip counting with any empty value variable in limit_req_zone.

各位Tengine使用者你们好!我们近期合并了Nginx官方1.15.9版本代码到Tengine master分支,大家可以先尝鲜使用master分支代码做测试(若上生产使用请一定要做好灰度验证、并阅读相关注意列表)。同时我们最近也会正式发布Tengine-2.3.x版本,欢迎大家使用,如有任何问题请随时反馈,谢谢。

注意事项

本次Tengine升级core代码到官方Nginx 1.15.9版本,由于其部分功能Nginx官方当前已经具备、所以本次直接弃用Tengine自身实现的部分配置指令,具体不兼容列表如下:

  1. 废弃Tengine自身实现的reuse_port指令,使用Nginx官方的reuseport。升级方法:将events配置块里面的reuse_port on|off注释掉,在对应的监听端口后面加reuseport参数、详细参考文档
  2. 废弃Tengine的dso_tool工具以及dso配置指令,若之前有使用Tengine的dso功能、则可以切换到Nginx官方的load_module指令,详细文档参考1参考2
  3. 移除Tengine加强版slice模块到modules、默认使用Nginx官方slice功能,如果依然需要使用Tengine的slice则编译slice时请使用 --add-module=modules/ngx_http_slice_module,否则使用 --with-http_slice_module 编译参数
  4. Tengine自身实现的模块,当前全部剥离到modules目录下,如果需要使用那个模块、则使用--add-module=modules/<module_name>的方式进行编译
  5. limit_req的请求计数逻辑和官方保持一致,去除limit_req_zone中任何一个变量值为空跳过请求计数的逻辑
@chobits
Copy link
Member

chobits commented Mar 2, 2019

Source details for this version:

ChangeLog: #1213

@yunoasgit
Copy link

yunoasgit commented Mar 6, 2019

compilation error: openssl 1.1.1b with tengine 2.3.0(master)

Compile conf
./configure --prefix=/usr/local/tengine2.3.0 --user=www --group=www --with-openssl=../openssl-1.1.1b

Compile error
Openssl-1.1.1b openssl-1.1.1a openssl-1.1.1 are all wrong

	-o objs/src/core/ngx_regex.o \
	src/core/ngx_regex.c
	src/event/ngx_event_openssl.c: In function ‘ngx_ssl_free_buffer’:
	src/event/ngx_event_openssl.c:2986: error: invalid type argument of ‘->’ (have ‘int’)
	src/event/ngx_event_openssl.c:2987: error: invalid type argument of ‘->’ (have ‘int’)
	src/event/ngx_event_openssl.c:2988: error: invalid type argument of ‘->’ (have ‘int’)
	make[1]: *** [objs/src/event/ngx_event_openssl.o] Error 1
	make[1]: *** Waiting for unfinished jobs....
	make[1]: Leaving directory `/usr/local/tengine-2.3.0'
	make: *** [build] Error 2

@chobits @wangfakang Ask for help
Thank you.

@wangfakang
Copy link
Collaborator Author

@yunoasgit Thanks for your report. you can try it #1202 .

fixed as follows:

diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index b03957af..e04b11bb 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -2982,13 +2982,6 @@ ngx_ssl_free_buffer(ngx_connection_t *c)
             c->ssl->buf->start = NULL;
         }
     }
-#if !defined(OPENSSL_IS_BORINGSSL) && (OPENSSL_VERSION_NUMBER >= 0x10101000L)
-    if (c->ssl->early_buf && c->ssl->early_buf->start) {
-        if (ngx_pfree(c->pool, c->ssl->early_buf->start) == NGX_OK) {
-            c->ssl->early_buf->start = NULL;
-        }
-    }
-#endif
 }

@yunoasgit
Copy link

@yunoasgit感谢您的举报。你可以尝试#1202

修正如下:

diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index b03957af..e04b11bb 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -2982,13 +2982,6 @@ ngx_ssl_free_buffer(ngx_connection_t *c)
             c->ssl->buf->start = NULL;
         }
     }
-#if !defined(OPENSSL_IS_BORINGSSL) && (OPENSSL_VERSION_NUMBER >= 0x10101000L)
-    if (c->ssl->early_buf && c->ssl->early_buf->start) {
-        if (ngx_pfree(c->pool, c->ssl->early_buf->start) == NGX_OK) {
-            c->ssl->early_buf->start = NULL;
-        }
-    }
-#endif
 }

Thanks very much,
Successful compilation after modification.

@yunoasgit
Copy link

yunoasgit commented Mar 8, 2019

Extract the tengine modules to modules dir,
Please, do not support so file loading?

Compile conf
--add-dynamic-module=./modules/ngx_backtrace_module --add-dynamic-module=./modules/ngx_debug_pool --add-dynamic-module=./modules/ngx_debug_timer --add-dynamic-module=./modules/ngx_http_concat_module --add-dynamic-module=./modules/ngx_http_footer_filter_module --add-dynamic-module=./modules/ngx_http_reqstat_module --add-dynamic-module=./modules/ngx_http_slice_module --add-dynamic-module=./modules/ngx_http_sysguard_module --add-dynamic-module=./modules/ngx_http_trim_filter_module --add-dynamic-module=./modules/ngx_http_upstream_check_module --add-dynamic-module=./modules/ngx_http_upstream_consistent_hash_module --add-dynamic-module=./modules/ngx_http_upstream_dynamic_module --add-dynamic-module=./modules/ngx_http_upstream_dyups_module --add-dynamic-module=./modules/ngx_http_upstream_session_sticky_module --add-dynamic-module=./modules/ngx_http_user_agent_module --add-dynamic-module=./modules/ngx_slab_stat

./nginx -m
Tengine version: Tengine/2.3.0 (nginx/1.15.9)
nginx: loaded modules:
...
nginx: ngx_backtrace_module (static)
nginx: ngx_http_debug_pool_module (static)
nginx: ngx_http_debug_timer_module (static)
nginx: ngx_http_concat_module (static)
nginx: ngx_http_reqstat_module (static)
nginx: ngx_http_slice_module (static)
nginx: ngx_http_sysguard_module (static)
nginx: ngx_http_upstream_check_module (static)
nginx: ngx_http_upstream_consistent_hash_module (static)
nginx: ngx_http_upstream_dynamic_module (static)
nginx: ngx_http_dyups_module (static)
nginx: ngx_http_user_agent_module (static)
nginx: ngx_http_slab_stat_module (static)
nginx: ngx_http_concat_module (static)
nginx: ngx_http_trim_filter_module (static)
nginx: ngx_http_upstream_session_sticky_module (static)
nginx: ngx_http_footer_filter_module (static)
...
nginx: the configuration file /usr/local/tengine2.3.0/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/tengine2.3.0/conf/nginx.conf test is successful

./ modules / no so file
Thanks !

@chobits
Copy link
Member

chobits commented Mar 8, 2019

hi @yunoasgit

Solution is given in #1203 (comment).
We could continue our discussion on #1203.

@taomaree
Copy link
Contributor

taomaree commented Mar 12, 2019

Tengine 2.3.x with stream upstream health check

ngx_healthcheck_module support nginx 1.15,support both http upstream and stream upstream health check.

it would be nice that Tengine supports stream upstream health check.

zhouchangxun/ngx_healthcheck_module#16

@ghost
Copy link

ghost commented Mar 13, 2019

Seems your development slow down ? last commit was about 5 days ago?

@chobits
Copy link
Member

chobits commented Mar 14, 2019

hi @netroby

We're preparing an official release:) Soon.

@yunoasgit
Copy link

Waiting for official release
@chobits

@wu0407
Copy link

wu0407 commented Mar 25, 2019

Extract the tengine modules to modules dir,
Please, do not support so file loading?

Compile conf
--add-dynamic-module=./modules/ngx_backtrace_module --add-dynamic-module=./modules/ngx_debug_pool --add-dynamic-module=./modules/ngx_debug_timer --add-dynamic-module=./modules/ngx_http_concat_module --add-dynamic-module=./modules/ngx_http_footer_filter_module --add-dynamic-module=./modules/ngx_http_reqstat_module --add-dynamic-module=./modules/ngx_http_slice_module --add-dynamic-module=./modules/ngx_http_sysguard_module --add-dynamic-module=./modules/ngx_http_trim_filter_module --add-dynamic-module=./modules/ngx_http_upstream_check_module --add-dynamic-module=./modules/ngx_http_upstream_consistent_hash_module --add-dynamic-module=./modules/ngx_http_upstream_dynamic_module --add-dynamic-module=./modules/ngx_http_upstream_dyups_module --add-dynamic-module=./modules/ngx_http_upstream_session_sticky_module --add-dynamic-module=./modules/ngx_http_user_agent_module --add-dynamic-module=./modules/ngx_slab_stat

./nginx -m
Tengine version: Tengine/2.3.0 (nginx/1.15.9)
nginx: loaded modules:
...
nginx: ngx_backtrace_module (static)
nginx: ngx_http_debug_pool_module (static)
nginx: ngx_http_debug_timer_module (static)
nginx: ngx_http_concat_module (static)
nginx: ngx_http_reqstat_module (static)
nginx: ngx_http_slice_module (static)
nginx: ngx_http_sysguard_module (static)
nginx: ngx_http_upstream_check_module (static)
nginx: ngx_http_upstream_consistent_hash_module (static)
nginx: ngx_http_upstream_dynamic_module (static)
nginx: ngx_http_dyups_module (static)
nginx: ngx_http_user_agent_module (static)
nginx: ngx_http_slab_stat_module (static)
nginx: ngx_http_concat_module (static)
nginx: ngx_http_trim_filter_module (static)
nginx: ngx_http_upstream_session_sticky_module (static)
nginx: ngx_http_footer_filter_module (static)
...
nginx: the configuration file /usr/local/tengine2.3.0/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/tengine2.3.0/conf/nginx.conf test is successful

./ modules / no so file
Thanks !

same problem, @chobits not same issue with #1203
This problem is tengine modules not suport dynamic

@yunoasgit
Copy link

@wu0407

  1. Extract the tengine modules to modules dir, if you need to use that module then use --add-module=modules/<module_name> way to compile.

In fact, I can understand that I need to select the required modules at the beginning.
There is a trade-off between the two methods.
Sometimes simplicity may be more effective.

@ghost
Copy link

ghost commented Mar 26, 2019

Glad to see , i read it today morning. thanks for great works.
I had already setup my server up to latest tengine .
And also write a blog introduce the latest tengine release.

@chobits
Copy link
Member

chobits commented Mar 27, 2019

@wu0407

It's just typo showed by -m option.

-m shows dynamic/static for original Tengine DSO feature(deprecated in 2.3.0), it does not show right state for nginx dynamic module feature(current used in 2.3.0).

@chobits
Copy link
Member

chobits commented Mar 27, 2019

@wu0407

Note that all tengine modules are currently not supported dynamic loading, which needs to modify module config. Add todo tag for these feature

@chobits
Copy link
Member

chobits commented Mar 27, 2019

The 2.3.0 version has been released, see #1220 for more details. I'm closing this close.

@chobits chobits closed this as completed Mar 27, 2019
@chobits chobits added this to the 2.3.0 milestone Mar 30, 2019
@chobits chobits changed the title Tengine-2.3.x will be released ! [Porting the official Nginx-1.15.9 ] Tengine-2.3.0 will be released ! [Porting the official Nginx-1.15.9 ] Mar 30, 2019
@chobits chobits added the release discussion of new release label Mar 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release discussion of new release
Projects
None yet
Development

No branches or pull requests

5 participants