新版发布
近日,轻量级开源 Web 服务器 Tengine 发布了 2.3.0 版本,新增如下特性:
ngx_http_proxy_connect_module,该模块让 Tengine 可以用于正向代理场景,支持对 CONNECT 方法请求的处理;
HTTP2 Server 粒度控制 新增 HTTP2 指令,可针对 listen 相同端口的 server 进行个性化开启与关闭 HTTP2;
Stream 模块支持 server_name 指令,可在 SSL 场景下,基于 SNI 识别出域名,让四层 SSL 转发支持特定的 server 块配置;
加强 limit_req 模块功能,可以基于请求粒度动态设置限速大小,更多详细变更日志请参考 limit_req 变更日志;
注意事项
需要注意的是,本次 Tengine 升级 core 代码至 Nginx 官方的 1.15.9 版本(2019 年 2 月 26 日发布),由于 Tengine 的部分功能 Nginx 官方已经实现,所以 Tengine 2.3.0 弃用了自身实现的部分配置指令,由此带来的不兼容性,列举如下:
废弃 Tengine 自身实现的 reuse_port 指令,使用 Nginx 官方 的 reuseport。
升级方法:将 events 配置块里面的 reuse_port on|off 注释掉,在对应的监听端口后面加 reuseport 参数,详细的操作文档,请参考 limit_req 变更日志。
废弃 Tengine 的 dso_tool 工具以及 dso 配置指令。
若之前有使用 Tengine 的 dso 功能,则可以切换到 Nginx 官方 的 load_module 指令,详细操作文档,请参考 Nginx 官方文档 1 和 Nginx 官方文档 2。
移除 Tengine 加强版 slice 模块到 modules,默认使用 Nginx 官方的 slice 功能。
如果依然需要使用 Tengine 的 slice,那么编译 slice 时请使用 –add-module=modules/ngx_http_slice_module,否则使用 –with-http_slice_module 编译参数;
Tengine 自身实现的模块,已全部剥离到 modules 目录下。
如果需要使用那个模块,请使用 –add-module=modules/ 的方式进行编译。
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 统一接入层的开发及维护。
本文作者:中间件小哥阅读原文
本文为云栖社区原创内容,未经允许不得转载。