1. 程式人生 > >Nginx 外的另一選擇,輕量級開源 Web 服務器 Tengine 發布新版本

Nginx 外的另一選擇,輕量級開源 Web 服務器 Tengine 發布新版本

能力 har 入口 super save 加速 雲智慧 個性化 計數

技術分享圖片

新版發布

近日,輕量級開源 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統一接入層的開發及維護。



本文作者:中間件小哥

原文鏈接

本文為雲棲社區原創內容,未經允許不得轉載。

Nginx 外的另一選擇,輕量級開源 Web 服務器 Tengine 發布新版本