本文的部分內容和摘錄於
為什麼要使用nginx模組?我個人覺得taobao這個ppt來做說明是最好不過了
從web伺服器結構開始說起:
第乙個模式(lamp):
這個結構中,apache的php模組將所有動態網頁都使用php解析,所有邏輯結構都放在php中進行處理。
這個結構也是現在最多web**的架構lamp(linux+apache+php+mysql)
apache的強勁的市場占有率(12月全球市場份額報告)也說明了這個結構的好處是易於理解,開發上手快。存在就是理由,apache的各種功能模組已經實現很多了,基本上能想到的功能都已經實現了。
但是這個結構有其致命的弱點:
1 高併發下效能表現不佳
2 頁面主體內容(比如)等靜態資源訪問浪費頻寬(當然這個後來大公司都改用cdn來處理)
3 存在慢連線攻擊(syn flood)風險
模式演變:
關於apache和nginx的優缺點的討論請看這裡
apache2.4剛剛發布,宣稱it』s 「as fast, and even faster than nginx」.
這裡有乙個blog對進行了測試實驗。
第二種模式(lnmp):
nginx是個輕量級的http server,必須借助第三方的fastcgi處理器才可以對php進行解析。現在使用最多的就是nginx+php-fpm+php這個模式了。
這裡apache被nginx取代,隨之帶來的解決優勢是:
1 提高併發服務能力
2 可以抵禦慢連線攻擊
3 靜態內容(css,js,pic)等放到cdn上,避免了頻寬浪費
4 php對於這些大資料量的資料的處理驟減,減少了php的計算量
但是這個模式最大的問題就在於:php+php-fpm對於nginx本身效能的限制。
nginx本身的極限測試:單機支援200萬連線以上(據說,未驗證),而php+php-fpm+nginx大概是3萬以上。(參考張宴的部落格)。當然這個效能已經遠遠滿足了絕大部分的**。但對於一些超大規模的專案(比如taobao)就必須考慮高併發的效能問題了。
好了,現在考慮,為什麼一定要使用php呢,nginx是否能完成邏輯呢?
模式演變:
從nginx聊開(nginx中文維基):
nginx是輕量級web伺服器,它**不多(v0.5.32才8w多行**)。nginx本身做的工作實際很少,當它接到乙個http請求時,它僅僅是通過查詢配置檔案將此次請求對映到乙個location block,而此location中所配置的各個指令則會啟動不同的模組去完成工作,因此模組可以看做nginx真正的勞動工作者。
nginx中的模組都是使用c語言編寫的。nginx中模組分為handler,filter和upstream三種型別。
第三種模型:
這種模型徹底放棄了php,邏輯不再依賴php指令碼了,直接使用nginx的擴充套件來完成,這就意味著不需要開啟n個fastcgi,不需要使用php進行邏輯操作了,高併發的php的限制也消失了。
初次看到這個模型會產生幾個問題:
1 nginx如何高效訪問mysql資料庫呢?
使用ngx_drizzle模組(國人編寫)
2 要實現越來越多的nginx模組,發現c語言開發效率太低了,是否有其他指令碼引擎呢?
使用lua指令碼,ngx_lua模組(taobao兩位大神的傑作)
在nginx_at_taobao的ppt上說taobao在2023年已經在開發大量的nginx模組了,並且在2023年推出了自己的web伺服器tengine(可以看做是nginx的super版本)(看來taobao在web伺服器方面是非常強啊!!)
使用lua指令碼(巴西人發明的一種語言,相當高效簡易)寫nginx擴充套件
nginx直接連線資料庫
將靜態資源放到cdn上
保證高併發下的效率的提公升
nginx的第三方模組
出處:
Nginx 第三方模組 漫談緣起
本文的部分內容和摘錄於 為什麼要使用nginx模組?我個人覺得taobao這個ppt來做說明是最好不過了 從web伺服器結構開始說起 第乙個模式 lamp 這個結構中,apache的php模組將所有動態網頁都使用php解析,所有邏輯結構都放在php中進行處理。這個結構也是現在最多web 的架構lam...
Nginx 第三方模組 漫談緣起
本文的部分內容和摘錄於 為什麼要使用nginx模組?我個人覺得taobao這個ppt來做說明是最好不過了 從web伺服器結構開始說起 第乙個模式 lamp 這個結構中,apache的php模組將所有動態網頁都使用php解析,所有邏輯結構都放在php中進行處理。這個結構也是現在最多web 的架構lam...
Nginx 第三方模組 漫談緣起
本文的部分內容和摘錄於 為什麼要使用nginx模組?我個人覺得taobao這個ppt來做說明是最好不過了 從web伺服器結構開始說起 第乙個模式 lamp 這個結構中,apache的php模組將所有動態網頁都使用php解析,所有邏輯結構都放在php中進行處理。這個結構也是現在最多web 的架構lam...