目前比較主流的 web 服務(wù)器應(yīng)用也就是 nginx 和 apache 了,今天就給大家闡述一下為什么我一直都推薦大家使用 nginx 而不是 apache?
有關(guān) Nginx 和 Apache 的介紹我就不做贅述了,大家自行百度、谷歌一下就可以了解了,廢話不多說了,直奔主題:
1、作為 Web 服務(wù)器:相比 Apache,Nginx 使用更少的資源,支持更多的并發(fā)連接,體現(xiàn)更高的效率,這點(diǎn)使 Nginx 尤其受到虛擬主機(jī)提供商的歡迎。 ? (推薦學(xué)習(xí):nginx教程)
在高連接并發(fā)的情況下,Nginx 是 Apache 服務(wù)器不錯(cuò)的替代品;Nginx 在美國(guó)是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一。能夠支持高達(dá) 50000 個(gè)并發(fā)連接數(shù)的響應(yīng),感謝 Nginx 為我們選擇了 epoll and kqueue 作為開發(fā)模型。
Nginx 作為負(fù)載均衡服務(wù)器:Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M(jìn)行服務(wù),也可以支持作為 HTTP 代理服務(wù)器對(duì)外進(jìn)行服務(wù)。Nginx 采用 C 進(jìn)行編寫,不論是系統(tǒng)資源開銷還是 CPU 使用效率都比 Perlbal 要好很多。
2、Nginx 配置簡(jiǎn)潔,Apache 復(fù)雜,Nginx 啟動(dòng)特別容易,并且?guī)缀蹩梢宰龅?7*24 不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng)。你還能夠不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí)。Nginx 靜態(tài)處理性能比 Apache 高 3 倍以上,Apache 對(duì) PHP 支持比較簡(jiǎn)單,Nginx 需要配合其他后端來使用,Apache 的組件比 Nginx 多。
3、最核心的區(qū)別在于 Apache 是同步多進(jìn)程模型,一個(gè)連接對(duì)應(yīng)一個(gè)進(jìn)程;Nginx 是異步的,多個(gè)連接(萬級(jí)別)可以對(duì)應(yīng)一個(gè)進(jìn)程。
4、Nginx 的優(yōu)勢(shì)是處理靜態(tài)請(qǐng)求,cpu 內(nèi)存使用率低,Apache 適合處理動(dòng)態(tài)請(qǐng)求,所以現(xiàn)在一般前端用 Nginx 作為反向代理抗住壓力,Apache 作為后端處理動(dòng)態(tài)請(qǐng)求。
Nginx 相對(duì) Apache 的優(yōu)點(diǎn)
輕量級(jí),同樣起 web 服務(wù),比 Apache 占用更少的內(nèi)存及資源
抗并發(fā),Nginx 處理請(qǐng)求是異步非阻塞的,而 Apache 則是阻塞型的,在高并發(fā)下 Nginx 能保持低資源低消耗高性能
高度模塊化的設(shè)計(jì),編寫模塊相對(duì)簡(jiǎn)單
社區(qū)活躍,各種高性能模塊出品迅速啊
Apache 相對(duì) Nginx 的優(yōu)點(diǎn)
rewrite,比 Nginx 的 rewrite 強(qiáng)大
模塊超多,基本想到的都可以找到
少 bug,Nginx 的 bug 相對(duì)較多
超穩(wěn)定
最后 Nginx 和 Apache 的差異總結(jié)成一句話就是:“Nginx 適合處理靜態(tài)請(qǐng)求和反向代理,Apache 適合處理動(dòng)態(tài)請(qǐng)求”。
但這個(gè)差異化只有在請(qǐng)求量達(dá)到一定的閾值時(shí)表現(xiàn)差異才能表現(xiàn)出來,對(duì)于 WordPress 、 Typecho 等等這里動(dòng)態(tài)站點(diǎn)來說某一天流量達(dá)到這個(gè)閾值的時(shí)候,還可以部署 LNMPA 這樣的生產(chǎn)環(huán)境來應(yīng)對(duì)和解決。所以流量閾值需求不到的時(shí)候,選擇 Nginx 是性價(jià)比最好的選擇了。