Tengine:Nginx二次開發-高性能進化

前言:在當今的互聯網時代,Web 服務器的性能和穩定性對于網站的成功至關重要。Nginx 以其高性能和可擴展性而聞名,但有時候,我們需要更多的特性來滿足特定的業務需求。Tengine,作為一個由淘寶網發起的 Nginx 二次開發版本,不僅繼承了 Nginx 的所有特性,還添加了許多高級功能和特性,以適應大訪問量網站的需求。本文將詳細介紹 Tengine 的特性、安裝、配置以及如何利用其動態模塊和 concat 模塊來優化 Web 服務。讓我們一起探索如何通過 Tengine 提升我們的 Web 服務平臺。

1、Tengine 概覽

Tengine 是基于 Nginx 的 Web 服務器項目,由淘寶網發起,專為高流量網站設計。它不僅在性能和穩定性上得到了大型網站如淘寶網、天貓商城的驗證,還致力于提供一個高效、穩定、安全、易用的 Web 平臺。

2 、Tengine 資源

  • 官網:http://tengine.taobao.org
  • 官方文檔:http://tengine.taobao.org/documentation_cn.html

3、 Tengine 特性

Tengine 繼承了 Nginx-1.16.0 的所有特性,并兼容 Nginx 的配置。以下是 Tengine 的一些關鍵特性:

  • 支持 HTTP 的 CONNECT 方法,適用于正向代理場景。
  • 支持異步 OpenSSL,可以使用硬件如 QAT 進行 HTTPS 的加速與卸載。
  • 增強運維、監控能力,如異步打印日志及回滾、本地 DNS 緩存、內存監控等。
  • Stream 模塊支持 server_name 指令。
  • 更加強大的負載均衡能力,包括一致性 hash 模塊、會話保持模塊,還可以對后端服務器進行主動健康檢查。
  • 支持設置 proxy、memcached、fastcgi、scgi、uwsgi 在后端失敗時的重試次數。
  • 動態腳本語言 Lua 支持,擴展功能非常高效簡單。
  • 支持按指定關鍵字(域名,url 等)收集 Tengine 運行狀態。
  • 組合多個 CSS、JavaScript 文件的訪問請求變成一個請求。
  • 自動去除空白字符和注釋,減小頁面體積。
  • 自動根據 CPU 數目設置進程個數和綁定 CPU 親緣性。
  • 監控系統的負載和資源占用,對系統進行保護。
  • 顯示對運維人員更友好的出錯信息,便于定位出錯機器。
  • 更強大的防攻擊(訪問速度限制)模塊。
  • 更方便的命令行參數,如列出編譯的模塊列表、支持的指令等。
  • 可以根據訪問文件類型設置過期時間。

4、 動態模塊

① 編譯安裝 Tengine-2.1.2

Tengine 支持運行時動態加載模塊,無需每次都重新編譯 Tengine。以下是編譯安裝 Tengine-2.1.2 的步驟:

  1. 安裝依賴:

    yum -y install gcc pcre-devel openssl-devel
    
  2. 創建用戶:

    useradd -r -s /sbin/nologin nginx
    
  3. 下載并解壓 Tengine 源碼:

    cd /usr/local/src
    wget http://tengine.taobao.org/download/tengine-2.1.2.tar.gz 
    tar xf tengine-2.1.2.tar.gz
    cd tengine-2.1.2/
    
  4. 配置并編譯安裝:

    ./configure --prefix=/apps/tengine-2.1.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre
    make && make install
    
  5. 鏈接二進制文件:

    ln -s /apps/tengine-2.1.2/sbin/* /usr/sbin/
    
  6. 啟動 Tengine:

    nginx
    

② 在 Tengine-2.1.2 中添加 Lua 動態模塊

  1. 安裝 Lua 開發包:

    yum -y install lua-devel
    
  2. 重新配置并安裝 Lua 模塊:

    ./configure --prefix=/apps/tengine-2.1.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_lua_module=shared
    make dso_install
    
  3. 修改配置文件以加載 Lua 模塊:

    vim /apps/tengine-2.1.2/conf/nginx.conf
    

    dso 塊中添加:

    dso {load ngx_http_lua_module.so;
    }
    
  4. 檢查配置并重啟 Tengine:

    nginx -t
    nginx -s reload
    

③ 編譯安裝 Tengine-2.3.2

Tengine-2.3.2 的編譯安裝步驟與 Tengine-2.1.2 類似,但增加了 Stream 模塊的支持。

  1. 安裝依賴:

    yum -y install gcc pcre-devel openssl-devel
    
  2. 創建用戶:

    useradd -r -s /sbin/nologin nginx
    
  3. 下載并解壓 Tengine 源碼:

    cd /usr/local/src
    wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz 
    tar xvf tengine-2.3.2.tar.gz
    cd tengine-2.3.2/
    
  4. 配置并編譯安裝:

    ./configure --prefix=/apps/tengine-2.3.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
    make && make install
    
  5. 鏈接二進制文件:

    ln -s /apps/tengine-2.3.2/sbin/* /usr/sbin/
    
  6. 啟動 Tengine:

    nginx
    

5、 Concat 模塊使用

① Concat 模塊說明

Concat 模塊用于合并多個文件在一個響應報文中,類似于 Apache 的 mod_concat 模塊。這有助于減少 HTTP 請求數量,提高網站加載速度和用戶體驗。

② 編譯安裝 Concat 模塊

  1. 確認 Tengine 版本是否支持 concat 模塊:

    ./configure --help | grep http_concat
    
  2. 配置并編譯安裝 concat 模塊:

    ./configure --prefix=/apps/tengine-2.1.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-http_lua_module=shared --with-http_concat_module=shared
    make dso_install
    
  3. 修改配置文件以啟用 concat 模塊:

    vim /apps/tengine-2.1.2/conf/nginx.conf
    

    location 塊中添加:

    location /static/css/ {concat on;concat_max_files 20;
    }location /static/js/ {concat on;concat_max_files 30;
    }
    
  4. 檢查配置并重啟 Tengine:

    nginx -t
    nginx -s reload
    

6、 Tengine 配置文件

Tengine 兼容 Nginx 指定版本的配置參數,允許用戶在不修改配置的情況下遷移到 Tengine。用戶可以根據需要調整配置文件,以充分利用 Tengine 提供的高級功能和特性。


以上是 Tengine 的詳細介紹,包括其特性、安裝步驟、動態模塊的使用以及 concat 模塊的配置。Tengine 是一個強大的 Nginx 二次開發版本,適用于需要高性能、高穩定性和高級功能的 Web 服務器環境。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63559.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63559.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63559.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RK3588, FFmpeg 拉流 RTSP, mpp 硬解碼轉RGB

RK3588 ,基于FFmpeg, 拉取RTSP,使用 mpp 實現硬解碼. ?? 傳送 ?? Ubuntu x64 架構, 交叉編譯aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解碼轉RGBRk3588 FFmpeg 拉流 RTSP, 硬解碼轉RGBRK3588 , mpp硬編碼yuv, 保存MP4視頻文件.

Windows 下 Anaconda的安裝與配置 GPU 版

給之前的電腦安一下深度學習環境 判斷是否有NVIDIA GPU Ctrl Shift Esc 打開任務管理器 帶此字眼表示有 NVIDIA GPU 安裝Anaconda anaconda 打開郵箱會看到下載鏈接 這里建議修改為其他盤,要不然下載的包和創建的環境都在C盤,占用空間 三個都打鉤 取…

【openssl】 version `OPENSSL_3.0.3‘ not found 問題

【openssl】 version OPENSSL_3.0.3 not found 問題 使用openssl時候報錯: openssl lib/libcrypto.so.3: version OPENSSL_3.0.3 not found查閱CSDN發現有博主說把別的地方的libcrypto.so.3 復制過去就好了。 嘗試無效 警告!這個操作不對: 不…

flask flask-socketio創建一個網頁聊天應用

應用所需環境: python 3.11.11 其他 只需要通過這個命令即可 pip install flask3.1.0 Flask-SocketIO5.4.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 最好是用conda創建一個新的虛擬環境來驗證 完整的pip list如下 Package Version ----…

聯邦學習防止數據泄露

文章目錄 聯邦學習防止數據泄露的原理聯邦學習的優勢聯邦學習與集中式學習的成本分析聯邦學習的實際應用案例個人設想參考文獻 聯邦學習 (Federated Learning) 是一種分布式機器學習技術,旨在解決數據隱私保護問題。它允許在分散的數據源上進行模型訓練,…

STM32 水質水位檢測項目(硬件架構)及(軟件架構)

硬件選型 水位測量模塊 TDS采集模塊 外置ADC模塊(ADS1115) 水位測量模塊使用方法 水位測量原理 壓力傳感器:水越深壓力越大 P ρgh Fps Fρgh*s P大氣壓 水位測量傳感器本質上是一個壓力測量傳感器。壓力的值和傳感器產生的電壓值是線…

C# 6.0 連接elasticsearch數據庫

在 C# 6.0 中連接 Elasticsearch 數據庫,您可以使用官方的 Elasticsearch 客戶端庫 NEST。NEST 是一個高性能的 .NET 客戶端,用于與 Elasticsearch 進行交互。以下是一個詳細的步驟指南,幫助您在 C# 6.0 項目中連接和操作 Elasticsearch。 1. 安裝 NEST 包 首先,您需要在您…

服務器數據恢復—RAIDZ離線硬盤數超過熱備盤數導致陣列崩潰的數據恢復案例

服務器存儲數據恢復環境: ZFS Storage 7320存儲陣列中有32塊硬盤。32塊硬盤分為4組,每組8塊硬盤,共組建了3組RAIDZ,每組raid都配置了熱備盤。 服務器存儲故障: 服務器存儲運行過程中突然崩潰,排除人為誤操…

Java轉C++之編程范式

1. 過程式編程(Procedural Programming) 在 C 中的表現 過程式編程是通過一系列的函數調用來實現程序的功能。函數是核心構建單元,數據和操作通過函數進行交互。 C 中:可以使用普通的函數和全局變量來進行過程式編程。Java 中&…

llama2中的model.py中的結構示意圖

參考文章:https://zhuanlan.zhihu.com/p/679640407

開放詞匯目標檢測(Open-Vocabulary Object Detection, OVOD)綜述

定義 開放詞匯目標檢測(Open-Vocabulary Object Detection, OVOD)是一種目標檢測任務,旨在檢測和識別那些未在訓練集中明確標注的物體類別。傳統的目標檢測模型通常只能識別有限數量的預定義類別,而OVOD模型則具有識別“開放詞匯…

Vue與React:前端框架的巔峰對決

文章目錄 一、引言(一)前端框架發展現狀簡述 二、Vue 與 React 框架概述(一)Vue.js 簡介(二)React.js 簡介 三、開發效率對比(一)Vue 開發效率分析(二)React …

3分鐘讀懂數據分析的流程是什么

數據分析是基于商業目的,有目的地進行收集、整理、加工和分析數據,提煉出有價值的 信息的一個過程。整個過程大致可分為五個階段,具體如下圖所示。 1.明確目的和思路 在開展數據分析之前,我們必須要搞清楚幾個問題,比…

vba批量化調整word的圖和圖表標題

vba代碼 將圖片進行居中操作 Sub ChangePictureFormate()Dim oPara As ParagraphDim oRange As RangeDim i As LongDim beforeIsPicture As BooleanbeforesIsPicture False 確保文檔中至少有圖片If ActiveDocument.InlineShapes.Count 0 ThenMsgBox "沒有找到圖片。&qu…

llama.cpp:PC端測試 MobileVLM -- 電腦端部署圖生文大模型

llama.cpp:PC端測試 MobileVLM 1.環境需要2.構建項目3.PC測試 1.環境需要 以下是經實驗驗證可行的環境參考,也可嘗試其他版本。 (1)PC:Ubuntu 22.04.4 (2)軟件環境:如下表所示 工…

詞嵌入(Word Embedding):自然語言處理的基石

目錄 ?編輯 詞嵌入(Word Embedding):自然語言處理的基石 引言 詞嵌入的基本概念 詞嵌入的主要方法 1. Word2Vec 2. GloVe 3. FastText 4. ELMo 5. BERT 詞嵌入的應用場景 詞嵌入的研究進展 結論 詞嵌入(Word Embedd…

AutoSarOS中調度表的概念與源代碼解析

--------AutoSarOS調度表的概念 一、AutoSarOS 是什么以及調度表的重要性 AutoSar(Automotive Open System Architecture)是汽車行業的一個開放式軟件架構標準哦。它就像是一種大家都遵循的規則,能讓不同的軟件供應商一起合作開發汽車軟件,這樣軟件就能被重復使用,開發效…

半連接轉內連接 | OceanBase SQL 查詢改寫

查詢優化器是關系型數據庫系統的核心模塊,是數據庫內核開發的重點和難點,也是衡量整個數據庫系統成熟度的“試金石”。為了幫助大家更好地理解 OceanBase 查詢優化器,我們撰寫了查詢改寫系列文章,帶大家更好地掌握查詢改寫的精髓&…

android opencv導入進行編譯

1、直接新建module進行導入,選擇opencv的sdk 導入module模式,選擇下載好的sdk,修改module name為OpenCV490。 有報錯直接解決報錯,沒報錯直接運行成功。 2、解決錯誤,同步成功 一般報錯是gradle版本問題較多。我的報…

通過阿里云 Milvus 與 PAI 搭建高效的檢索增強對話系統

背景介紹 阿里云向量檢索服務Milvus版(簡稱阿里云Milvus)是一款云上全托管服務,確保了了與開源Milvus的100%兼容性,并支持無縫遷移。在開源版本的基礎上增強了可擴展性,能提供大規模 AI 向量數據的相似性檢索服務。相…