Tengine Web服务器概述
Tengine Web服務器概述
Tengine是由淘寶網發起的Web服務器項目。在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。目的是打造一個高效、安全的Web平臺。
發展
Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。
最終目標是打造一個高效、穩定、安全、易用的Web平臺。
從2011年12月開始,Tengine成為一個開源項目。
由Tengine團隊開發和維護。Tengine團隊的核心成員來自于淘寶、搜狗等互聯網企業。
功能
以下沿引項目主頁上的特性介紹:
? 繼承Nginx-1.6.2的所有特性,兼容Nginx的配置;
? 動態模塊加載(DSO)支持。加入一個模塊不再需要重新編譯整個Tengine;
? 支持SO_REUSEPORT選項,建連性能提升為官方nginx的三倍;
? 支持SPDY v3協議,自動檢測同一端口的SPDY請求和HTTP請求;
? 流式上傳到HTTP后端服務器或FastCGI服務器,大量減少機器的I/O壓力;
? 更加強大的負載均衡能力,包括一致性hash模塊、會話保持模塊,還可以對后端的服務器進行主動健康檢查,根據服務器狀態自動上線下線,以及動態解析upstream中出現的域名;
? 輸入過濾器機制支持。通過使用這種機制Web應用防火墻的編寫更為方便;
? 支持設置proxy、memcached、fastcgi、scgi、uwsgi在后端失敗時的重試次數
? 動態腳本語言Lua支持。擴展功能非常高效簡單;
? 支持管道(pipe)和syslog(本地和遠端)形式的日志以及日志抽樣;
? 支持按指定關鍵字(域名,url等)收集Tengine運行狀態;
? 組合多個CSS、JavaScript文件的訪問請求變成一個請求;
? 自動去除空白字符和注釋從而減小頁面的體積
? 自動根據CPU數目設置進程個數和綁定CPU親緣性;
? 監控系統的負載和資源占用從而對系統進行保護;
? 顯示對運維人員更友好的出錯信息,便于定位出錯機器;
? 更強大的防攻擊(訪問速度限制)模塊;
? 更方便的命令行參數,如列出編譯的模塊列表、支持的指令等;
? 可以根據訪問文件類型設置過期時間;
? ……
編譯
tengine的編譯參數與nginx基本一致,針對tengine的新增特性,可以在編譯的時候增加一些參數,比如增加“ --with-http_concat_module”這一參數,就可以使將tengine的組合多個訪問請求變為一個的功能打開。以下是一段tengine的編譯參數實例:
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_concat_module --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_random_index_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module --with-pcre=/usr/local/src/pcre-8.20
特性詳解
CDN Combo
這一功能可以組合Javascript 以及 Css文件
使用方法:
a)以兩個問號(??)激活combo
b)多文件之間用半角逗號(,)分開
c)用一個?來辨識時間戳
作用:
遵循Yahoo!前端優化準則第一條:減少HTTP請求發送次數
強制gzip壓縮
默認開啟的功能
作用:
Tengine會在用戶瀏覽器沒有在請求中帶Accept-Encoding時通過下列方式判斷是否gzip,保證只要支持gzip的瀏覽器中都會被覆蓋到.
a)如果瀏覽器沒有帶有Accept-Encoding且cookie中沒有gzip支持標識
b)通過User-Agent判斷是否支持
c)發送一段js腳本,腳本中請求一個永遠都gzip的url
d)如果該段內容被執行,則寫入一個cookie值標識此瀏覽器支持gzip
過載保護
在http{}段添加
sysguard on; sysguard_load load=4 action=/high_load.html; #系統負載,超過設置值了就跳轉到action設置的頁面
sysguard_mem swapratio=10% action=/mem_high.html #內存負載,超過設置值了就跳轉到action設置的頁面
作用:
可以在系統超負載時友好提示用戶,增強用戶體驗。
提示:
大家可以通過 top命令來查看當前系統負載,最好是借助第三方工具進行服務器負載監控,進行數天或1個月的監控,分析出準確適合的運營數據后再設置過載保護功能。
修改nginx默認使用的消息模型
添加方法:
在events {}段添加
use epoll;
作用:
使用linux內核最新支持的epoll句柄處理模型,對于大流量的網站這個配置開啟提升會非常大。
(注:確定系統內核版本>=2.5.44 最好是2.6+, 查看方式uname -a)
隱藏webServerName
添加方法:
在http{} 段內添加
server_tag off;
或
server_tag IIS/6.0;
作用:
隱藏真實web服務器名稱,防止hacker有針對性的突破
nginx進程設置簡化
添加方法:
修改配置文件中的worker_process為以下
worker_processes auto;worker_cpu_affinity auto;
作用:
在不同硬件環境下對于nginx本身的生產進程優化會由webserver自動調整,而無需專業知識進行調優。
擴展4xx,5xx錯誤提示
添加方法:
在http{} 段內添加
server_info on;server_admin xxx@xxx.xxx;
作用:
展示管理員聯系方式以便用戶反饋錯誤
擴展的nginx命令行參數
方法:
切換至
/usr/local/nginx/sbin
列出當前已編譯的模塊
./nginx -m
列出當前支持的指令
./nginx -l
日志抽樣支持
方法:
Example:access_log xxxx ratio=0.01;
作用:
減少日志數量。
總結
以上是生活随笔為你收集整理的Tengine Web服务器概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为MDC软件架构
- 下一篇: Tengine Framework基础