有很多人都在說(shuō)Nginx比Apache好、比Apache快的這類說(shuō)法,因?yàn)榇蠹覍?duì)apache和nginx選哪個(gè)的概念也比較模糊,什么情況下選Nginx,什么情況下選Apache ,今天我們來(lái)聊下這個(gè)問(wèn)題

Apache是什么?
Apache HTTP Server(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)的一個(gè)開(kāi)放源碼的網(wǎng)頁(yè)服務(wù)器,可以在大多數(shù)計(jì)算機(jī)操作系統(tǒng)中運(yùn)行,由于其多平臺(tái)和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過(guò)簡(jiǎn)單的API擴(kuò)展,將Perl/Python等解釋器編譯到服務(wù)器中。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上,由于其跨平臺(tái)和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。
Apache 的特性有哪些:
1、支持最新的HTTP/1.1通信協(xié)議
2、擁有簡(jiǎn)單而強(qiáng)有力的基于文件的配置過(guò)程
3、支持通用網(wǎng)關(guān)接口
4、支持基于IP和基于域名的虛擬主機(jī)
5、支持多種方式的HTTP認(rèn)證
6、集成Perl處理模塊
7、集成代理服務(wù)器模塊
8、支持實(shí)時(shí)監(jiān)視服務(wù)器狀態(tài)和定制服務(wù)器日志
9、支持服務(wù)器端包含指令(SSI)
10、支持安全Socket層(SSL)
11、提供用戶會(huì)話過(guò)程的跟蹤
12、支持FastCGI
13、通過(guò)第三方模塊可以支持JavaServlets

Nginx是什么?
Nginx是一個(gè)來(lái)自俄羅斯的流行的Web應(yīng)用服務(wù)器,它被應(yīng)用于大量的俄羅斯的高并發(fā)站點(diǎn),俄羅斯的搜索引擎網(wǎng)站Rambler就是基于Nginx構(gòu)建的。Nginx對(duì)靜態(tài)頁(yè)面的支持相當(dāng)出色,輕量且免費(fèi)。Nginx不支持CGI,但是支持更靈活的FastCGI。PHP5.2及之前的版本比較多的是使用PHP-FPM來(lái)管理PHP FastCGI進(jìn)程。PHP-FPM使用給PHP源碼打補(bǔ)丁后編譯的方式讓新手多少有些難上手,但從PHP 5.3.2開(kāi)始內(nèi)置PHP-FPM,只需編譯PHP時(shí)啟用PHP-FPM。
Nginx的特性有哪些:
1、處理靜態(tài)文件,索引文件以及自動(dòng)索引;打開(kāi)文件描述符緩沖
2、無(wú)緩存的反向代理加速,簡(jiǎn)單的負(fù)載均衡和容錯(cuò)
3、FastCGI,簡(jiǎn)單的負(fù)載均衡和容錯(cuò)
4、模塊化的結(jié)構(gòu)。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等f(wàn)ilter。如果由FastCGI或其它代理服務(wù)器處理單頁(yè)中存在的多個(gè)SSI,則這項(xiàng)處理可以并行運(yùn)行,而不需要相互等待
5、支持SSL 和 TLS SNI
Nginx專為性能優(yōu)化而開(kāi)發(fā),性能是其最重要的考量, 實(shí)現(xiàn)上非常注重效率 。它支持內(nèi)核Poll模型,能經(jīng)受高負(fù)載的考驗(yàn), 有報(bào)告表明能支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)。
nginx 相對(duì) apache 的優(yōu)點(diǎn):
1、 輕量級(jí),同樣起web 服務(wù),比apache 占用更少的內(nèi)存及資源
2、抗并發(fā),nginx 處理請(qǐng)求是異步非阻塞的,而apache 則是阻塞型的,在高并發(fā)下nginx 能保持低資源低消耗高性能
3、 高度模塊化的設(shè)計(jì),編寫(xiě)模塊相對(duì)簡(jiǎn)單
4、社區(qū)活躍,各種高性能模塊出品迅速啊
5、 nginx處理靜態(tài)文件好,耗費(fèi)內(nèi)存少
6、 Nginx 配置簡(jiǎn)潔, Apache 復(fù)雜
apache 相對(duì)nginx 的優(yōu)點(diǎn):
1、 rewrite方面比nginx 的rewrite 強(qiáng)大
2、模塊超多,基本想到的都可以找到
3、 bug比較少 ,nginx 的bug 相對(duì)較多
4、 比較穩(wěn)定
5、Apache 對(duì) PHP 支持比較簡(jiǎn)單,Nginx 需要配合其他后端用
6、Apache 的組件比 Nginx 多
總結(jié):服務(wù)器該用Nginx還是Apache?
1、作為 Web 服務(wù)器:相比 Apache,Nginx 使用更少的資源,支持更多的并發(fā)連接,體現(xiàn)更高的效率,這點(diǎn)使 Nginx 尤其受到虛擬主機(jī)提供商的歡迎。在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品: Nginx在美國(guó)是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一. 能夠支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)的響應(yīng), 感謝Nginx為我們選擇了 epoll and kqueue 作為開(kāi)發(fā)模型。
2、Nginx作為負(fù)載均衡服務(wù)器: Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M(jìn)行服務(wù), 也可以支持作為 HTTP代理 服務(wù)器對(duì)外進(jìn)行服務(wù). Nginx采用C進(jìn)行編寫(xiě), 不論是系統(tǒng)資源開(kāi)銷(xiāo)還是CPU使用效率都比 Perlbal 要好很多.
作為郵件代理服務(wù)器: Nginx 同時(shí)也是一個(gè)非常優(yōu)秀的郵件代理服務(wù)器(最早開(kāi)發(fā)這個(gè)產(chǎn)品的目的之一也是作為郵件代理服務(wù)器), Last.fm 描述了成功并且美妙的使用經(jīng)驗(yàn)。
3、Nginx 是一個(gè)安裝非常的簡(jiǎn)單 , 配置文件非常簡(jiǎn)潔(還能夠支持perl語(yǔ)法), Bugs 非常少的服務(wù)器: Nginx 啟動(dòng)特別容易, 并且?guī)缀蹩梢宰龅?*24不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng). 你還能夠不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí) 。
4、最核心的區(qū)別在于apache是同步多進(jìn)程模型,一個(gè)連接對(duì)應(yīng)一個(gè)進(jìn)程;nginx是異步的,多個(gè)連接(萬(wàn)級(jí)別)可以對(duì)應(yīng)一個(gè)進(jìn)程。
apache運(yùn)行php比較好,適合跑動(dòng)態(tài),nginx比較適合跑靜態(tài)。現(xiàn)在流行的lanmp架構(gòu)就是同時(shí)使用apache和nginx,靜態(tài)網(wǎng)頁(yè)有nginx處理,動(dòng)態(tài)交由apache處理,這樣就能更大限度的發(fā)揮服務(wù)器性能。
更多有關(guān)服務(wù)器部署的資訊,請(qǐng)聯(lián)系藍(lán)暢客服
本文來(lái)自網(wǎng)絡(luò) 由藍(lán)暢整理,經(jīng)授權(quán)后發(fā)布,本文觀點(diǎn)不代表Infocode藍(lán)暢信息技術(shù)立場(chǎng),轉(zhuǎn)載請(qǐng)聯(lián)系原作者。