
夢揚科(kē)技(jì)下(xià)午要(yào)上(shàng)架一(yī)台服務器™→(qì),客戶要(yào)求一(yī)定要(yào)按照(zhào)Nginx,因為(wèi)之前∑≠∑ 瘋狗科(kē)技(jì)使用(yòng)的(de)web環境一(yī)直都(dγ$∞→ōu)是(shì)LAMP,也(yě)就(jiù)是(shì):×εLinux、Apache、Mysql、PHP,與客戶要(yào"↑∞)求僅是(shì)Apahce和(hé)Nginx之區(qū)别,接下(xià) ✘來(lái),小(xiǎo)編帶大(dà)家λβ(jiā)一(yī)起了(le)解下(xià)Apach<♠✘∑e和(hé)Nginx到(dào)底有(yǒu)什(shén)麽區(qū)别。
Nginx
1、輕量級,采用(yòng) C 進行(xíng♠↔™™)編寫,同樣的(de) web 服務,會(huì)占用≤™®✔(yòng)更少(shǎo)的(de)內(<"♦nèi)存及資源
2、抗并發,nginx 以 epoll and kqu$←≠eue 作(zuò)為(wèi)開(kāi)發模型,處理(lǐ)請(qǐng)求是(shì)異♠×←≤步非阻塞的(de),負載能(néng)力比 apache 高(gāo)很(hěn↔← )多(duō),而 apache 則是(sh™♣±≥ì)阻塞型的(de)。在高(gāo)并發₹♠ 下(xià) nginx 能(néng)保持低(dī)資源低(dī)消耗高(gāo)性能(néλα♣♣ng) ,而 apache 在 PHP 處理(lǐ)慢(màn)或者前端壓力很(hěn)大(dà)的(de)情況下(xià>π•),很(hěn)容易出現(xiàn)進程數(shù)飙升,從(cóng)而拒絕服¥Ω→務的(de)現(xiàn)象。
3、nginx 處理(lǐ)靜(jìng)态文(w¥¥♠<én)件(jiàn)好(hǎo),靜(jìng)态處理(∞♠ ≥lǐ)性能(néng)比 apache 高(gāo)三倍以上(shàng) ↓★∞
4、nginx 的(de)設計(jì)高(gāo)度模塊化(huà),編寫模塊₩¥相(xiàng)對(duì)簡單
5、nginx 配置簡潔,正則配置讓很(hěn)多(duō)事(s©¶hì)情變得(de)簡單,而且改完配置能(néng)使₹>≥€用(yòng) -t 測試配置有(yǒu)沒有(yǒu)問(wèn)題,apache Ω×¥配置複雜(zá) ,重啓的(de)時★≈β€(shí)候發現(xiàn)配置出錯(cuò)了(le),會(h¥Ω☆<uì)很(hěn)崩潰
6、nginx 作(zuò)為(wèi)負載均衡服務器(qì),支持 7 層負載均>衡
7、nginx 本身(shēn)就(jiù)是(shì)一(yī)個(gè)反向代理(l§φ✔<ǐ)服務器(qì),而且可(kě)以作(zuò)為(wèi)非常優秀的(de)郵件(jiàn✘↕)代理(lǐ)服務器(qì)
8、啓動特别容易, 并且幾乎可(kě)以做(zuò)到(dào) 7*24 不(bù)間(₩ jiān)斷運行(xíng),即使運行(xíng)數(shù)個(gè)λ₽✘月(yuè)也(yě)不(bù)需要(yào)重新啓動,還(hái)能(né®γng)夠不(bù)間(jiān)斷服務的(de)情況下(xφ↓ià)進行(xíng)軟件(jiàn)版本的(de)升"γγ級
9、社區(qū)活躍,各種高(gāo)性能(néng)模塊出品迅速 >
Apache
1、apache 的(de) rewrite 比 nginx 強大(dà±ββ),在 rewrite 頻(pín)繁的(de)情況下(xià),≥π 用(yòng) apache
2、apache 發展到(dào)現(xiàn)在,模塊§α超多(duō),基本想到(dào)的(de)都(dōu)可(kě)以找到(dào)
3、apache 更為(wèi)成熟,少(α"≤shǎo) bug ,nginx 的(de) bug 相(xiàng)對(du§¶ì)較多(duō)
4、apache 超穩定
5、apache 對(duì) PHP 支持比較簡單,nginx 需要€γ≥(yào)配合其他(tā)後端用(yòng)
6、apache 在處理(lǐ)動态請(₩∑qǐng)求有(yǒu)優勢,nginx 在這(zhè)π>÷♦方面是(shì)雞肋,一(yī)般動态請(←±qǐng)求要(yào) apache 去(qù)做(zuò),nginx 适合¥'≠ 靜(jìng)态和(hé)反向。
7、apache 仍然是(shì)目前₽∏♦的(de)主流,擁有(yǒu)豐富的(de)φ☆特性,成熟的(de)技(jì)術(shù)和(hé)開(kāi)發社區(qūΩ )
兩者最核心的(de)區(qū)别在于 apache 是σσ(shì)同步多(duō)進程模型,一(yī)個(gè)連接對(duì)應一(yī)個(gè"↓)進程,而 nginx 是(shì)異步的(de),多∑™δ↕(duō)個(gè)連接(萬級别)可(k¥ě)以對(duì)應一(yī)個(gè)進程
一(yī)般來(lái)說(shuō♦♦&),需要(yào)性能(néng)的(de) web 服務,用(yòng) nginσ→"±x 。如(rú)果不(bù)需要(yào)性能(néng)隻求穩定,更考慮 apache , ∏←>後者的(de)各種功能(néng)模塊實現(xiàn)≥♦得(de)比前者,例如(rú) ssl 的↑β(de)模塊就(jiù)比前者好(hǎo),可(kě)配置項多(duō)。epoll(fr≥σ↔eebsd 上(shàng)是(shì) kqueue ) ® α€網絡 IO 模型是(shì) nginx 處理(lǐ)性能" ±(néng)高(gāo)的(de)根本理(lǐ)由,但(dàn)并不(bù)"π☆¶是(shì)所有(yǒu)的(de)情況下(♦←> xià)都(dōu)是(shì) epφ¥oll 大(dà)獲全勝的(de),如(rú)果本身(s£λ₹hēn)提供靜(jìng)态服務的(de)就↑&✘(jiù)隻有(yǒu)寥寥幾個(gè)文(wén)件(jiàn),apache 的←©€(de) select 模型或許比 epoll 更高(gāo)性能(né$∏★ng)。當然,這(zhè)隻是(shì)根據網絡 IO 模型的(de)原理(lǐ)作(zu÷✔ò)的(de)一(yī)個(gè)假設,真正的(de)應用(yòng)還(hái♠★§±)是(shì)需要(yào)實測了(le)再說(shuō)的(de)≥¶φ☆。
更為(wèi)通(tōng)用(yòng)的(d¶¶☆e)方案是(shì),前端 nginx 抗并發,後端 apache 集群,配合起來(lá≥&i)會(huì)更好(hǎo)。