前言:在當今的互聯網時代,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 的步驟:
-
安裝依賴:
yum -y install gcc pcre-devel openssl-devel
-
創建用戶:
useradd -r -s /sbin/nologin nginx
-
下載并解壓 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/
-
配置并編譯安裝:
./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
-
鏈接二進制文件:
ln -s /apps/tengine-2.1.2/sbin/* /usr/sbin/
-
啟動 Tengine:
nginx
② 在 Tengine-2.1.2 中添加 Lua 動態模塊
-
安裝 Lua 開發包:
yum -y install lua-devel
-
重新配置并安裝 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
-
修改配置文件以加載 Lua 模塊:
vim /apps/tengine-2.1.2/conf/nginx.conf
在
dso
塊中添加:dso {load ngx_http_lua_module.so; }
-
檢查配置并重啟 Tengine:
nginx -t nginx -s reload
③ 編譯安裝 Tengine-2.3.2
Tengine-2.3.2 的編譯安裝步驟與 Tengine-2.1.2 類似,但增加了 Stream 模塊的支持。
-
安裝依賴:
yum -y install gcc pcre-devel openssl-devel
-
創建用戶:
useradd -r -s /sbin/nologin nginx
-
下載并解壓 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/
-
配置并編譯安裝:
./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
-
鏈接二進制文件:
ln -s /apps/tengine-2.3.2/sbin/* /usr/sbin/
-
啟動 Tengine:
nginx
5、 Concat 模塊使用
① Concat 模塊說明
Concat 模塊用于合并多個文件在一個響應報文中,類似于 Apache 的 mod_concat 模塊。這有助于減少 HTTP 請求數量,提高網站加載速度和用戶體驗。
② 編譯安裝 Concat 模塊
-
確認 Tengine 版本是否支持 concat 模塊:
./configure --help | grep http_concat
-
配置并編譯安裝 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
-
修改配置文件以啟用 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; }
-
檢查配置并重啟 Tengine:
nginx -t nginx -s reload
6、 Tengine 配置文件
Tengine 兼容 Nginx 指定版本的配置參數,允許用戶在不修改配置的情況下遷移到 Tengine。用戶可以根據需要調整配置文件,以充分利用 Tengine 提供的高級功能和特性。
以上是 Tengine 的詳細介紹,包括其特性、安裝步驟、動態模塊的使用以及 concat 模塊的配置。Tengine 是一個強大的 Nginx 二次開發版本,適用于需要高性能、高穩定性和高級功能的 Web 服務器環境。