1 概述
Nginx (engine x)分爲開源和商業版,是單進程響應用戶的併發請求,沒有線程的概念,特點是有很多模塊組成的。處理靜態頁面時http的10倍效率,可以實現30000的併發進程,http一般是隻能達到10000的併發。二次開發版本有Tengine和 OpenResty,官網是http://nginx.org
本文將介紹nginx的特性,功能和相關模塊
2 概念介紹
2.1 nginx架構圖
nginx的程序是master/worker結構
.一個master進程:負載加載和分析配置文件、管理worker進程、平滑升級
.一個或多個worker進程:處理並響應用戶請求
.緩存相關的進程:
cache loader:載入緩存對象
cache manager:管理緩存對象
架構圖如下
2.2 nginx特性
.模塊化設計,較好的擴展性
.高可靠性
.支持熱部署:不停機更新配置文件,升級版本,更換日誌文件
.低內存消耗:10000個keep-alive連接模式下的非活動連接,僅需要2.5M內存
.支持event-driven,aio,mmap,sendfile
2.3 nginx功能
2.3.1 基本功能:
.靜態資源的高性能web服務器,處理html,圖片,js,css,txt等靜態資源
. tcp/udp協議反向代理服務器:實現三個功能,一、負載均衡,相當於調度器,轉發數據到後端服務器,實現LVS一樣的功能,二、客戶端沒有直接接觸服務器,更加安全。三、緩存,可以加速訪問。
. IMAP/POP3/SMTP協議反向代理服務器
. 通用的TCP/ UDP代理服務器
. 結合FastCGI/uWSGI/SCGI等協議反向代理動態資源請求
.模塊化(非DSO),如zip,SSL模塊
2.3.2 nginx web服務相關的功能
1)虛擬主機(server)
2)支持keep-alive和管道連接
3)訪問日誌(支持基於日誌緩衝提高其性能)
4)url rewirte
5)路徑別名
6)基於IP及用戶的訪問控制
7)支持速率限制及併發數限制
8)Memcached的GET 接口
9)重新配置和在線升級而無須中斷客戶的工作進程,比如升級過程,舊的主進程會被關掉,同時開啓一個新版本的主進程。但是,舊的子進程不受影響,會繼續處理舊的請求,直到把舊請求處理完成才關掉該舊子進程。此時新版本的主進程會開啓新的子進程,用來接收新的請求,實現了平滑過渡。
2.4 nginx模塊
.nginx高度模塊化,模塊表現爲各種文件,但其模塊早期不支持DSO機制;1.9.11版本支持動態裝載和卸載
.模塊分類:三大類
a)核心模塊:coremodule
b)標準模塊:分爲三類
1)HTTP 模塊:ngx_http_*
HTTP Core modules 默認功能
HTTP Optional modules 需編譯時指定
2)Mail模塊ngx_mail_*
3)Stream 模塊ngx_stream_*
c)第三方模塊