Nginx和Apache的區別,以及優缺點

一、Nginx:

1.輕量級,採用C語言編寫的,同樣的web服務,會佔用更少的內存及資源;

2.抗併發,nginx以epoll and kqueue作爲開發模型,處理請求是異步非阻塞的,負載能力比apache高很多,而apache則是阻塞型的。在高併發下nginx能保持低資源低消耗高性能,而apache在PHP處理慢或者前端壓力很大的情況下,很容易出現進程數飆升,從而拒絕服務的現象;

3.nginx處理靜態文件好,靜態處理能力比apache高三倍以上;

4.nginx的設計高度模塊化,編寫模塊相對簡單;

5.nginx配置簡潔,正則配置讓很多事情變得簡單,而且改完配置可以使用-t測試配置有沒有問題,apache配置複雜,重啓的時候發現配置出錯了,會很崩潰;

6.nginx作爲負載均衡服務器,支持7層負載均衡;

7.nginx本身就是一個反向代理服務器,而且可以作爲非常優秀的郵件代理服務器;

8.啓動特別容易,並且幾乎可以做到7*24小時不間斷運行,即使運行數個月也不需要重新啓動,還能夠在不間斷服務的情況下進行軟件版本的升級;

9.社區活躍,各種高性能模塊出品迅速。

二、Apache

1.apache的rewrite比nginx強大,在rewrite頻繁的情況下,用apache;

2.apache發展到現在,模塊超多,基本想到的都可以找到;

3.apache更爲成熟,bug比較少,nginx的bug相對較多;

4.apache超穩定;

5.apache對PHP支持比較簡單,nginx需要配合其他後端用;

6.aoache在處理動態請求有優勢,nginx在這方面是雞肋,一般動態請求要apache去做,nginx適合靜態和反向代理;

7.apache仍然是目前的主流,擁有豐富的特性,成熟的技術和開發社區。

三、總結

兩者最核心的區別在於apache是同步多進程模型,一個連接對應一個進程,而nginx是異步的,多個連接(萬級別)可以對應一個進程;

一般來說,需要性能的web服務,用nginx。如果不需要性能只求穩定,更考慮apache,後者的各種功能模塊實現的比前者好,例如ssl的模塊就比前者好,可配置項多。epoll(freebad上是kqueue)網絡IO模型是nginx處理性能高的根本理由,但並不是所有情況下都是epoll大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個文件,apache的select模型或許比epoll更高性能。當然,這只是根據網絡IO模型的原理做的一個假設,真正應用還是需要實測了再說的。

文章出自:https://www.cnblogs.com/changning0822/p/7844004.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章