天天看點

淺析Nginx與Apache的差別[通俗易懂]

大家好,又見面了,我是你們的朋友全棧君。

Nginx相對于Apache的優勢:

1.輕量級,采用C進行編寫,同樣的web服務,會占用更少的記憶體及資源
2.抗并發,nginx以epoll and kqueue作為開發模型,處理請求是異步非阻塞的,多個連接配接對應一個程序,負載能力比apache高很多,
  而apache則是同步多程序模型,隻能一個連接配接對應一個程序,當壓力過大時,它是會被阻塞型的。
  在高并發下nginx能保持低資源低消耗高性能 ,而apache在PHP處理慢或者前端壓力很大的情況下,很容易出現程序數飙升,進而拒絕服務的現象。
3.設計高度子產品化,編寫子產品相對簡單
4.配置簡潔,正則配置讓很多事情變得簡單,而且改完配置能使用 -t 測試配置有沒有問題,apache 配置複雜 ,重新開機的時候發現配置出錯了,會很崩潰
5.一般用于處理靜态檔案,靜态處理性能比apache高三倍以上
6.作為負載均衡伺服器,支援7層負載均衡
7.本身就是一個反向代理伺服器,而且可以作為非常優秀的郵件代理伺服器
8.nginx啟動特别容易, 并且幾乎可以做到 7*24 不間斷運作,即使運作數個月也不需要重新啟動,
  支援熱部署,比如:實作不間斷服務的情況下進行軟體版本的更新與版本的回退
9.社群活躍,各種高性能子產品出品迅速           

複制

Apache相對于Nginx的優勢:

1.apache的rewrite比nginx強大,在rewrite頻繁的情況下,用apache
2.apache發展到現在,子產品超多,基本想到的都可以找到
3.apache更為成熟,少bug ,nginx的bug相對較多
4.apache超穩定,一個程序死掉時,會影響到多個使用者的使用,穩定性差
5.apache對PHP支援比較簡單,nginx需要配合其他後端用
6.apache在處理動态請求有優勢,nginx在這方面是雞肋,一般動态請求要apache去做,nginx适合靜态和反向。
7.apache仍然是目前的主流,擁有豐富的特性,成熟的技術和開發社群           

複制

總結:

兩者最核心的差別在于:
Apache是同步多程序模型,一個連接配接對應一個程序,而Nginx是異步的,多個連接配接(萬級别)可以對應一個程序。           

複制

适用場景:

一般來說,需要性能的web服務,用Nginx;如果不需要性能隻求穩定,更考慮Apache;
Nginx處理放靜态内容比Apache要好,特别是在可承受壓力、帶寬及資源消耗上都要優于Apache。
是以更為通用的方案是,前端Nginx抗并發,後端Apache叢集,配合起來會更好。           

複制

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/132076.html原文連結:https://javaforall.cn