WWW.W1987.CN杨广的个人网站,记录生活的瞬间,分享学习的心得,感悟生活,留住感动,静静寻觅生活的美好
Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本
Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本

Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本

Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本

新版发布

近日,轻量级开源 Web 服务器 Tengine 发布了2.3.0版本,新增如下特性:

  1. ngx_http_proxy_connect_module,该模块让 Tengine 可以用于正向代理场景,支持对 CONNECT 方法请求的处理;
  2. HTTP2 Server粒度控制 新增 HTTP2指令,可针对 listen 相同端口的 server 进行个性化开启与关闭 HTTP2;
  3. Stream模块支持 server_name 指令,可在 SSL 场景下,基于 SNI 识别出域名,让四层SSL 转发支持特定的 server 块配置;
  4. 加强 limit_req 模块功能,可以基于请求粒度动态设置限速大小,更多详细变更日志请参考limit_req 变更日志

注意事项

需要注意的是,本次 Tengine 升级 core 代码至 Nginx 官方的1.15.9版本(2019年2月26日发布),由于 Tengine 的部分功能 Nginx 官方已经实现,所以 Tengine 2.3.0 弃用了自身实现的部分配置指令,由此带来的不兼容性,列举如下:

  1. 废弃 Tengine 自身实现的 reuse_port 指令,使用 Nginx官方 的reuseport。

升级方法:将events 配置块里面的 reuse_port on|off 注释掉,在对应的监听端口后面加 reuseport 参数,详细的操作文档,请参考limit_req 变更日志

  1. 废弃 Tengine 的 dso_tool 工具以及 dso 配置指令。

若之前有使用 Tengine 的 dso 功能,则可以切换到 Nginx官方 的 load_module 指令,详细操作文档,请参考Nginx 官方文档1Nginx 官方文档2

  1. 移除 Tengine 加强版 slice 模块到 modules,默认使用 Nginx 官方的 slice 功能。

如果依然需要使用 Tengine 的 slice,那么编译slice时请使用–add-module=modules/ngx_http_slice_module,否则使用 –with-http_slice_module 编译参数;

  1. Tengine 自身实现的模块,已全部剥离到 modules 目录下。

如果需要使用那个模块,请使用 –add-module=modules/ 的方式进行编译。

  1. limit_req 的请求计数逻辑和官方保持一致,去除 limit_req_zone 中任何一个变量值为空,跳过请求计数的逻辑。

关于 Tengine

Tengine 是基于 Nginx 开发的轻量级开源 Web 服务器,作为阿里巴巴七层流量入口的核心系统,支撑着阿里巴巴双11等大促活动的平稳度过,并提供了智能的流量转发策略、HTTPS 加速、安全防攻击、链路追踪等众多高级特性,同时秉着软硬件结合的的性能优化思路,在高性能、高并发方面取得了重大突破。

自开源以来,Tengine 已获得来自67位 contributors 的1390个 commits,他们分别来自淘宝、搜狗,美团、Nginx 等企业。

据不完全统计,目前已有 200多家企业在通过 Tengine 来实现 Web 服务、负载均衡、代理服务、防攻击和访问限制等功能,包括傲世堂、小米网、聚美优品、河狸家、旺旺集团、杭州思华、中国博客联盟、SuperID、联想网盘、华兴资本、猿题库、蓝奏网盘、HoukeYun、云智慧等。

目前,Tengine 正通过 Ingress Controller 和 K8s 打通,这让 Tengine 具备了动态感知某个服务整个生命周期的能力。未来,Tengine 将定期开源内部通用组件功能模块,并同步 Nginx 官方的最新代码,丰富开发者们的开源 Web 服务器选项。

本文作者:王发康(花名:毅松) GitHub ID @wangfakang ,Tengine 开源项目 maintainer,阿里巴巴技术专家,负责阿里巴巴WEB统一接入层的开发及维护。


本文作者:中间件小哥

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

发表回复