Tengine 2.3.0 釋出,阿里巴巴開源的輕量級 Web 伺服器
輕量級開源 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 模組 功能,可以基於請求粒度動態設定限速大小,更多詳細變更日誌請點此參考 ;
需要注意的是,本次 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 引數,詳細的操作文件,請點此參考 。 -
廢棄 Tengine 的 dso_tool 工具以及 dso 配置指令
。
若之前有使用 Tengine 的 dso 功能,則可以切換到 Nginx官方 的 load_module 指令,詳細操作文件,請參考連結1 和連結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/<module_name> 的方式進行編譯。 - limit_req 的請求計數邏輯和官方保持一致,去除 limit_req_zone 中任何一個變數值為空,跳過請求計數的邏輯 。
Tengine 是基於 Nginx 開發的輕量級開源 Web 伺服器,作為阿里巴巴七層流量入口的核心繫統,支撐著阿里巴巴雙11等大促活動的平穩度過,並提供了智慧的流量轉發策略、HTTPS 加速、安全防攻擊、鏈路追蹤等眾多高階特性,同時秉著軟硬體結合的的效能優化思路,在高效能、高併發方面取得了重大突破。
目前,Tengine 正通過 Ingress Controller 和 K8s 打通,這讓 Tengine 具備了動態感知某個服務整個生命週期的能力。未來,Tengine 將定期開源內部通用元件功能模組,並同步 Nginx 官方的最新程式碼,豐富開發者們的開源 Web 伺服器選項。
來源:阿里巴巴中介軟體