Tengine 2.3.0 發布阿里巴巴開源的輕量級Web服務器
輕量級開源Web服務器Tengine於近日發布了2.3.0版本,Tengine是基於Nginx開發的輕量級開源Web服務器,作為阿里巴巴七層流量入口的核心系統,支撐著阿里巴巴雙11等大促活動的平穩度過,並提供了智能的流量轉發策略、HTTPS加速、安全防攻擊、鏈路追踪等眾多高級特性,同時秉著軟硬件結合的的性能優化思路,在高性能、高並發方面取得了重大突破。新增如下特性:
- 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正通過Ingress Controller和K8s打通,這讓Tengine具備了動態感知某個服務整個生命週期的能力。未來,Tengine將定期開源內部通用組件功能模塊,並同步Nginx官方的最新代碼,豐富開發者們的開源Web 服務器選項。
訪問: