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

Nginx 外的另一選擇,輕量級開源 Web 服務器 Tengine 發佈新版本
新版發佈
近日,輕量級開源 Web 服務器 Tengine 發佈了2.3.0版本,新增如下特性:

ngx_http_proxy_connect_module [1] ,該模塊讓 Tengine 可以用於正向代理場景,支持對 CONNECT 方法請求的處理;
HTTP2 Server粒度控制[2] 新增 HTTP2指令,可針對 listen 相同端口的 server 進行個性化開啓與關閉 HTTP2;
Stream模塊支持 server_name[3] 指令,可在 SSL 場景下,基於 SNI 識別出域名,讓四層SSL 轉發支持特定的 server 塊配置;
加強 limit_req 模塊[4] 功能,可以基於請求粒度動態設置限速大小,更多詳細變更日誌請參考[5];
注意事項
需要注意的是,本次 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 參數,詳細的操作文檔,請參考[5] 。

廢棄 Tengine 的 dso_tool 工具以及 dso 配置指令。
若之前有使用 Tengine 的 dso 功能,則可以切換到 Nginx官方 的 load_module 指令,詳細操作文檔,請參考[6]和[7] 。

移除 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統一接入層的開發及維護。
文中鏈接:

[1] ngx_http_proxy_connect_module
http://tengine.taobao.org/document_cn/proxy_connect_cn.html

[2] HTTP2 Server粒度控制
http://tengine.taobao.org/document_cn/http_core_cn.html

[3] server_name
http://tengine.taobao.org/document_cn/stream_sni_cn.html

[4] limit_req 模塊
http://tengine.taobao.org/document_cn/http_core_cn.html

[5] limit_req 變更日誌
http://tengine.taobao.org/changelog_cn.html#2_3_0

[6] Nginx 官方文檔1
https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/

[7] Nginx 官方文檔2
http://nginx.org/en/docs/ngx_core_module.html#load_module

[8] Nginx 官方文檔3
https://www.nginx.com/resources/wiki/extending/converting/#compiling-dynamic

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章