Nginx VS Apache
Nginx簡(jiǎn)介
Nginx 是俄羅斯人編寫的十分輕量級(jí)的 HTTP 服務(wù)器扮饶。是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,同時(shí)也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器乍构。其將源代碼以類BSD許可證的形式發(fā)布甜无,因它的穩(wěn)定性、豐富的功能集哥遮、示例配置文件和低系統(tǒng)資源的消耗而聞名岂丘。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng)眠饮,事實(shí)上nginx的并發(fā)能力在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好奥帘。
Apache簡(jiǎn)介
Apache HTTP Server(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)的一個(gè)開放源碼的網(wǎng)頁(yè)服務(wù)器,它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上仪召,由于其跨平臺(tái)和安全性被廣泛使用寨蹋,是最流行的Web服務(wù)器端軟件之一。它快速扔茅、可靠并且可通過簡(jiǎn)單的API擴(kuò)展钥庇,將Perl/Python等解釋器編譯到服務(wù)器中。Apache是世界使用排名第一的Web服務(wù)器軟件咖摹。
它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上评姨,由于其跨平臺(tái)和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一萤晴。
Apache與Nginx 的優(yōu)缺點(diǎn)比較吐句;
1、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ì)較多 (現(xiàn)在 bug 方面應(yīng)該沒多大區(qū)別)超穩(wěn)定灭忠。存在就是理由膳算,一般來說,需要性能的 web 服務(wù)弛作,用 nginx 涕蜂。如果不需要性能只求穩(wěn)定。那就 apache 吧映琳。后者的各種功能模塊實(shí)現(xiàn)得比前者宇葱,例如 ssl 的模塊就比前者好,可配置項(xiàng)多刊头。這里要注意一點(diǎn)黍瞧, epoll(freebsd 上是 kqueue )網(wǎng)絡(luò) IO 模型是 nginx 處理性能高的根本理由,但并不是所有的情況下都是 epoll 大獲全勝的原杂,如果本身提供靜態(tài)服務(wù)的就只有寥寥幾個(gè)文件印颤, apache 的 select 模型或許比 epoll 更高性能。當(dāng)然穿肄,這只是根據(jù)網(wǎng)絡(luò) IO 模型的原理作的一個(gè)假設(shè)年局,真正的應(yīng)用還是需要實(shí)測(cè)了再說的。
2咸产、作為 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 作為開發(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 要好很多。
作為郵件代理服務(wù)器: Nginx 同時(shí)也是一個(gè)非常優(yōu)秀的郵件代理服務(wù)器(最早開發(fā)這個(gè)產(chǎn)品的目的之一也是作為郵件代理服務(wù)器) 搏恤, Last.fm 描述了成功并且美妙的使用經(jīng)驗(yàn) 违寿。
Nginx 是一個(gè)安裝非常的簡(jiǎn)單 ,配置文件非常簡(jiǎn)潔(還能夠支持 perl 語法)熟空,Bugs 非常少的服務(wù)器Nginx 啟動(dòng)特別容易藤巢,并且?guī)缀蹩梢宰龅?7*24 不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng). 你還能夠不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí) 痛阻。
3菌瘪、Nginx 配置簡(jiǎn)潔腮敌,Apache 復(fù)雜
Nginx 靜態(tài)處理性能比 Apache 高 3 倍以上阱当;
Apache 對(duì) PHP 支持比較簡(jiǎn)單俏扩, Nginx 需要配合其他后端用;
Apache 的組件比 Nginx 多弊添;
現(xiàn)在 Nginx 才是 Web 服務(wù)器的首選 录淡。
4、最核心的區(qū)別在于 apache 是同步多進(jìn)程模型油坝,一個(gè)連接對(duì)應(yīng)一個(gè)進(jìn)程嫉戚; nginx 是異步的,多個(gè)連接(萬級(jí)別)可以對(duì)應(yīng)一個(gè)進(jìn)程澈圈。
5彬檀、nginx 處理靜態(tài)文件好,耗費(fèi)內(nèi)存少但無疑 apache 仍然是目前的主流瞬女,有很多豐富的特性窍帝,所以還需要搭配著來。當(dāng)然如果能確定nginx就適合需求诽偷,那么使用nginx會(huì)是更經(jīng)濟(jì)的方式坤学。
6、從個(gè)人過往的使用情況來看报慕, nginx 的負(fù)載能力比 apache 高很多深浮。最新的服務(wù)器也改用 nginx 了。而且 nginx 改完配置能-t 測(cè)試一下配置有沒有問題眠冈, apache 重啟的時(shí)候發(fā)現(xiàn)配置出錯(cuò)了飞苇,會(huì)很崩潰,改的時(shí)候都會(huì)非常小心翼翼現(xiàn)在看有好多集群站蜗顽,前端 nginx 抗并發(fā)玄柠,后端 apache 集群,配合的也不錯(cuò)诫舅。
7羽利、 nginx 處理動(dòng)態(tài)請(qǐng)求是比較弱,一般動(dòng)態(tài)請(qǐng)求要 apache 去做刊懈, nginx 只適合靜態(tài)和反向 这弧。
8、 nginx 是很不錯(cuò)的前端服務(wù)器虚汛,負(fù)載性能很好匾浪, apache 對(duì) php 等語言的支持很好,此外 apache 有強(qiáng)大的支持網(wǎng)路卷哩,發(fā)展時(shí)間相對(duì) nginx 更久蛋辈, bug 少但是 apache 有先天不支持多核心處理負(fù)載的缺點(diǎn),建議使用 nginx 做前端,后端用 apache冷溶。大型網(wǎng)站建議用 nginx 自帶的集群功能渐白。
9、 Nginx 優(yōu)于 apache 的主要兩點(diǎn):
① Nginx 本身就是一個(gè)反向代理服務(wù)器逞频;
② Nginx 支持 7 層負(fù)載均衡纯衍;其他的當(dāng)然, Nginx 可能會(huì)比 apache 支持更高的并發(fā)苗胀。
10襟诸、你對(duì) web server 的需求決定你的選擇。大部分情況下 nginx 都優(yōu)于 APACHE基协,比如說靜態(tài)文件處理歌亲、 PHP-CGI 的支持、反向代理功能澜驮、前端 Cache应结、維持連接等等。在Apache+PHP( prefork)模式下泉唁,如果 PHP 處理慢或者前端壓力很大的情況下鹅龄,很容易出現(xiàn) Apache 進(jìn)程數(shù)飆升,從而拒絕服務(wù)的現(xiàn)象亭畜。
11扮休、可以看一下 nginx lua 模塊:apache 比 nginx 多的模塊,可直接用 lua 實(shí)現(xiàn) apache 是最流行的拴鸵, why玷坠?大多數(shù)人懶得更新到 nginx 或者學(xué)新事物 。
12劲藐、對(duì)于 nginx八堡,我喜歡它配置文件寫的很簡(jiǎn)潔,正則配置讓很多事情變得簡(jiǎn)單運(yùn)行效率高聘芜,占用資源少兄渺,代理功能強(qiáng)大,很適合做前端響應(yīng)服務(wù)器汰现。
13挂谍、 Apache 在處理動(dòng)態(tài)有優(yōu)勢(shì), Nginx 并發(fā)性比較好瞎饲, CPU 內(nèi)存占用低口叙,如果 rewrite頻繁,那還是 Apache 吧 嗅战。