Nginx 外的另一選擇,輕量級開源 Web 伺服器 Tengine 釋出新版本

芊寶寶發表於2019-04-11
Nginx 外的另一選擇,輕量級開源 Web 伺服器 Tengine 釋出新版本

新版釋出

近日,輕量級開源 Web 伺服器 Tengine 釋出了2.3.0版本,新增如下特性:

  1. ngx_http_proxy_connect_module [1] ,該模組讓 Tengine 可以用於正向代理場景,支援對 CONNECT 方法請求的處理;
  2. HTTP2 Server粒度控制[2] 新增 HTTP2指令,可針對 listen 相同埠的 server 進行個性化開啟與關閉 HTTP2;
  3. Stream模組支援 server_name[3] 指令,可在 SSL 場景下,基於 SNI 識別出域名,讓四層SSL 轉發支援特定的 server 塊配置;
  4. 加強 limit_req 模組[4] 功能,可以基於請求粒度動態設定限速大小,更多詳細變更日誌請參考[5];

注意事項

需要注意的是,本次 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 引數,詳細的操作文件,請參考[5] 。

  1. 廢棄 Tengine 的 dso_tool 工具以及 dso 配置指令。

若之前有使用 Tengine 的 dso 功能,則可以切換到 Nginx官方 的 load_module 指令,詳細操作文件,請參考[6]和[7] 。

  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 伺服器選項。


原文連結

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


相關文章