網頁 HTTP 伺服器 Apache 與 Nginx 的優缺點比較(網站架設教學)
總教頭這篇文章是:網頁 HTTP 伺服器 Apache 與 Nginx 的優缺點比較
Apache HTTP 網頁伺服器:
Apache HTTP Server(簡稱Apache)是Apache軟體基金會的一個開放原始碼的網頁伺服器軟體,可以在大多數電腦作業系統中運行。
由於其跨平台和安全性,被廣泛使用,是最流行的Web伺服器軟體之一。
它快速、可靠並且可通過簡單的API擴充,將Perl/Python等直譯器編譯到伺服器中。
Nginx HTTP 網頁伺服器:
Nginx(發音同engine x)是非同步框架的網頁伺服器,也可以用作反向代理、負載平衡器和HTTP快取。
該軟體由伊戈爾·賽索耶夫建立並於2004年首次公開發布。
2011年成立同名公司以提供支援。
2019年3月11日,Nginx公司被F5 Networks以6。7億美元收購。
Nginx是免費的開源軟體,根據類BSD授權條款的條款釋出。
一大部分Web伺服器使用Nginx,通常作為負載均衡器。
網頁 HTTP 伺服器 Apache 與 Nginx 的優缺點比較:
1、Nginx相對於Apache的優點:
輕量級,同樣起web 服務,比Apache佔用更少的記憶體及資源
抗並發,Nginx 處理請求是異步非阻塞的,而Apache 則是阻塞型的,在高並發下Nginx 能保持低資源低消耗高效能
高度模組化的設計,編寫模組相對簡單。
社區活躍,各種高效能模組出品迅速。
Apache 相對於Nginx 的優點:
rewrite ,比Nginx 的rewrite 強大
動態頁面:
模組超多,基本想到的都可以找到
少bug ,Nginx 的bug 相對較多
超穩定:
存在就是理由,一般來說,需要效能的web 服務,用Nginx 。
如果不需要效能只求穩定,那就Apache 吧。 後者的各種功能模組實現得比前者,例如ssl 的模組就比前者好,可配置項多。
這裡要注意一點,epoll(freebsd 上是 kqueue )網路 IO 模型是Nginx 處理效能高的根本理由,但並不是所有的情況下都是epoll 大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個文 件,Apache 的select 模型或許比epoll 更高效能。
當然,這只是根據網路IO 模型的原理作的一個假設,真正的應用還是需要實測了再說的。
2、作為 Web 伺服器:相比 Apache,Nginx 使用更少的資源,支援更多的並發連線,體現更高的效率,這點 使 Nginx 尤其受到虛擬主機提供商的歡迎。
在高連線並發的情況下,Nginx是Apache伺服器不錯的替代品:Nginx在美國是做虛擬主機生 意的老闆們經常選取的軟體平台之一。
能夠支援高達 50,000 個並發連線數的響應,感謝Nginx為我們選取了 epoll and kqueue 作為開發模型。
Nginx 作為負載均衡伺服器:Nginx 既可以在內定直接支援 Rails 和 PHP 程式對外進行服務,也可以支援作為 HTTP代理 伺服器對外進行服務。
Nginx採用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。
作為信件代理伺服器:Nginx 同時也是一個非常優秀的信件代理伺服器(最早開發這個產品的目的之一也是作為信件代理伺服器), Last。
fm 描述了成功並且美妙的使用經驗。
Nginx 是 一個安裝非常的簡單 , 配置檔非常簡潔(還能夠支援perl語法), Bugs 非常少的伺服器:Nginx 啟動特別容易,並且幾乎可以做到 7*24不間斷運行,即使運行數個月也不需要重新啟動。 你還能夠不間斷服務的情況下進行軟體版本的升級。
3、Nginx 配置簡潔,Apache 複雜:
Nginx 靜態處理效能比 Apache 高 3倍以上。
Apache 對 PHP 支援比較簡單,Nginx 需要配合其他後端用。
Apache 的元件比 Nginx 多。
現在 Nginx 才是 Web 伺服器的偏好。
4、最核心的區別在於Apache是同步多程式模型,一個連線對應一個程式;Nginx是異步的,多個連線(萬層級)可以對應一個程式。
5、Nginx處理靜態檔案好,耗費記憶體少。
但無疑Apache仍然是目前的主流,有很多豐富的特性。所以還需要搭配著來。當然如果能確定Nginx就適合需求,那麼使用Nginx會是更經濟的模式。
Apache有先天不支援多核心處理負載雞肋的缺點,建議使用Nginx做前端,後端用Apache。大型網站建議用Nginx自代的集群功能
6、 從個人過往的使用情況來看,Nginx的負載能力比Apache高很多。
最新的伺服器也改用Nginx了。
而且Nginx改完配置能-t測試一下配置有沒有問題,Apache重啟的時候發現配置出錯了,會很崩潰,改的時候都會非常小心翼翼現在看有好多集群站,前端Nginx抗並發,後端Apache集群, 配合的也不錯。
7、Nginx處理動態請求是雞肋,一般動態請求要Apache去做,Nginx只適合靜態和反向。
8、從我個人的經驗來看,Nginx是很不錯的前端伺服器,負載效能很好,在老奔上開Nginx,用webbench模擬10000個靜態檔案請求毫不吃力。
Apache對php等語系的支援很好,此外Apache有強大的支援網路,發展時間相對Nginx更久,
9、Nginx優於Apache的主要兩點:1。Nginx本身就是一個反向代理伺服器 2。
Nginx支援7層負載均衡;其他的當然,Nginx可能會比 Apache支援更高的並發,但是根據NetCraft的統計,2011年4月的統計資料,Apache依然佔有62。
71%,而Nginx是 7。35%,因此總得來說,Aapche依然是大部分公司的首先,因為其成熟的技術和開發社區已經也是非常不錯的效能。
10、你對web server的需求決定你的選取。大 部分情況下Nginx都優於Apache,比如說靜態檔案處理、PHP-CGI的支援、反向代理功能、前端Cache、維持連線等等。
在 Apache+PHP(prefork)模式下,如果PHP處理慢或是前端壓力很大的情況下,很容易出現Apache程式數飆升,從而拒絕服務的現象。
11、可以看一下Nginx lua模組:https://github.com/chaoslaw… Apache比Nginx多的模組,可直接用lua實現Apache是最流行的,why?
大多數人懶得更新到Nginx或是學新事物
12、對於Nginx,我喜歡它配置檔寫的很簡潔,正則配置讓很多事情變得簡單運行效率高,佔用資源少,代理功能強大,很適合做前端響應伺服器
13、Apache在處理動態有優勢,Nginx並發性比較好,CPU記憶體佔用低,如果rewrite頻繁,那還是Apache吧
Apache Nginx
https://serverguy.com/comparison/apache-vs-nginx/
Apache Vs NGINX – Which Is The Best Web Server for You?
Apache和NGINX之間的主要區別在於它們的設計架構。
Apache使用過程驅動的方法,並為每個請求創建一個新線程。
NGINX使用事件驅動的體系結構來處理一個線程內的多個請求。
什麼是Apache HTTP Server?
Apache HTTP Server是一個開源的跨平台Web服務器,也稱為“ httpd”和Apache。
關於Apache的一些有趣的事實是:
Apache Software Foundation管理其品牌和服務。
該服務器由ASF下的開放開發人員社區開發和維護。
Apache主要運行在Linux上,為全球46%的網站提供支持。
它是LAMP(Linux,Apache,MySQL,PHP)堆棧的關鍵組件。
什麼是NGINX Web服務器?
什麼是NGINX?發音為“ Engine X” —它是Igor Sysoev於2004年發布的Web服務器。今天,它不僅僅是一個網絡服務器!
您應該了解有關Nginx服務器的信息:
最初,人們大多使用Nginx作為Apache的補充。
它主要用於提供靜態文件,但如今,它已發展成為可處理所有服務器任務的完整Web服務器。
如今,Nginx通常用作反向代理,負載平衡器,郵件代理和HTTP緩存。
Apache和Nginx都是Linux上最常見的Web服務器。它們共同為網絡提供了超過50%的流量。
附言儘管Apache和Nginx具有許多共同的特質,但在許多方面卻有所不同。每個人都以自己的方式出類拔萃,並有自己的用途和場景。
要了解差異並得出結論,讓我們在下面進行詳細的端到端比較。我們還提到了每個比較點的每個比較點的贏家。
基本架構
說到Apache與Nginx,根本的區別在於它們的設計架構。這意味著它們在處理連接和流量以及對不同流量狀況做出響應的實際方式上有所不同。
一個隱含一種過程驅動的方法,另一個隱含一種事件驅動的體系結構。
Apache:
過程驅動方法
為每個請求創建一個新線程。
Apache遵循多線程方法。它提供了多種多樣的處理模塊。這些預模塊基本上是三種類型的請求處理算法。每個都針對不同的服務器需求。
MPM(多處理模塊)提供了一種靈活的體系結構,用於選擇不同的連接和不同的處理算法。
同樣,不同版本的Apache 2使用不同的處理模塊。
三個主要的Apache MPM是:
流程(前叉)MPM
工人MPM
活動MPM
老派Apache(2.2)使用mpm_worker,mpm_prefork和mod_php。而Apache 2.4(新apache)配置為使用mpm_event,php-fpm。
預設情況下,Apache 2.2配置為前叉模式(mpm_prefork)。它響應一定數量的過程,每個過程可以一次滿足一個請求。
換句話說,Apache每次都會創建一個新線程來處理每個連接請求。
線程:線程是可以由調度程序獨立管理的已編程指令的最小序列。在大多數情況下,線程是進程的組成部分。
但是,Apache的基本體系結構會導致大量資源消耗,從而導致服務器出現問題(例如,速度較慢)。
NGINX:
事件驅動的方法
在一個線程中處理多個請求
Nginx採用事件驅動的架構,並異步處理請求。
它被設計為使用非阻塞事件驅動的連接處理算法。
因此,其進程可以在一個處理線程中處理數千個連接(請求)。
這樣的連接處理模塊使Nginx可以在有限的資源下快速且廣泛地工作。
此外,您可以在低功率系統上以及在重負載下運行的系統上使用Nginx。
優勝者:
NGiNX –它具有輕量級的結構,並且比Apache的結構要快得多。
在效能方面的比較:
關於Apache vs Nginx,兩個Web伺服器對靜態和動態內容的處理模式不同。
他們說Nginx在處理靜態內容方面更好,讓我們看看這是真的!
2.1靜態內容
阿帕奇 Apache 使用基於檔案的方法提供靜態內容
靜態內容或檔案通常是存儲在伺服器電腦磁碟上的檔案,例如CSS檔案,JavaScripts檔案或圖像。
Apache使用其一般的基於檔案的方法來處理靜態內容。
NGINX:
在提供靜態內容時,Nginx是王者!
由於Nginx的設計架構能夠更好地處理負載,因此在提供靜態內容方面,它的速度要快得多。
根據運行多達1,000個並發連線的基準測試,它的效能比Apache快2.5倍。
Nginx提供靜態資源,而PHP無需瞭解這一點。另一方面,Apache會以高昂的開銷處理所有這些請求。這使得Nginx更有效,對系統資源的要求也更低。
此小圖顯示否。每秒處理的靜態內容請求數。 Nginx在這裡顯然超過了Apache!
2.2動態內容:
Apache 阿帕奇:
處理伺服器內的動態內容
Apache可以在Web伺服器本身中處理動態內容,而不必依賴任何外部元件。因此,它可以處理您自己的信條。
談論Apache與Nginx的效能:如果考慮動態內容處理,則Nginx甚至更好,甚至更好。
這是每秒動態內容請求數的比較。看起來沒有什麼區別。
談到動態內容,Nginx無法像Apache一樣在網路伺服器中對其進行處理。
具有動態網頁內容的所有請求都將傳遞到外部流程(例如PHP-FPM)以執行。
Nginx等待最終的內容返回並將其傳遞回用戶端。請參考此圖以獲得清晰的主意:
當與SCGI處理程式和FastCGI模組一起使用時,NGINX可以提供動態內容。
推文:當與SCGI處理程式和FastCGI模組一起使用時,NGINX可以提供動態內容。
附言這個過程聽起來有點複雜。但是,它在某種程度上有利於它並使Nginx更快。
優勝者:
靜態的:就靜態內容而言,Nginx超越了Apache。
動態的:兩者都擅長處理動態內容。
操作系統支援:
操作系統支援可能是要考慮的重要點,尤其是在比較Apache與Nginx時。但是,兩者在這裡幾乎相似。
Apache 阿帕奇:
支援所有類似Unix的系統,內含Linux和BSD。
完全支援MS-Windows
Apache可在各種類似Unix的系統(例如Linux或BSD)上運行,並完全支援Microsoft Windows。
NGINX:
支援幾乎所有類似Unix的操作系統
部分支援Windows。
它也可以在幾種類似Unix的現代系統上運行,並且對Windows有所支援,但是Windows的效能不如其他平台強。
優勝者:
Apache在這裡脫穎而出。
分佈式/集中式配置:
Apache vs Nginx是當之無愧的話題。它們的配置使它們彼此不同,並使它們同樣有趣。讓我們看看誰的配置更容易,更快捷。
Apache 阿帕奇:
容許通過.htaccess檔案在每個目錄的基礎上進行其他配置。
這種體系結構容許非特權使用者控制其網站的某些方面,而無需授予他們編輯主配置的權限。好大!
NGINX:
不容許其他配置
另一方面,它有一個缺點。它不提供其他配置。但是,它可以提高效能,因此對您有利。
通過不容許目錄配置,它可以比Apache更快地處理請求。無需搜尋.htaccess檔案並解釋使用者的要求。
優勝者:
Apache(如果考慮配置); NGiNX,如果速度是。
要求解釋:
在Apache vs Nginx辯論中,解釋請求的方法是一個有趣的比較主題。兩者都以完全不同的模式處理和解釋請求。
他們不同的方法使它們與眾不同,並且一個也比另一個更好。讓我們探索如何!
Apache 阿帕奇:
通過檔案系統位置
提供解釋需求的能力。作為檔案系統位置上的物理資源,可能需要更抽像的評估。它將請求作為檔案系統位置傳遞。
當然,Apache確實使用URI位置,但是它們通常用於更多抽像資源。在建立或配置虛擬主機時,Apache使用文件根目錄下的目錄塊。
在使用.htaccess檔案覆蓋特定的目錄配置時,也可以看到檔案系統位置的偏好項。
傳遞URI來解釋請求:
Nginx被建立為既是Web伺服器又是反向代理伺服器。
由於對這些架構的要求,Nginx主要使用您的眼睛。必要時轉換為系統。
它沒有提供用於指定配置的機制。對於檔案系統目錄,而是傳遞其URI本身。
通過將請求作為URI而不是檔案系統位置進行傳遞,Nginx可以在Web伺服器和代理伺服器中輕鬆運行。它通過佈局如何響應差異請求模式來進行簡單配置。
Apache vs Nginx:
在準備好處理請求之前,它不會檢查檔案系統。它解釋了為什麼它不實現任何形式的.htaccess檔案。
這種將請求解釋為URI位置的設計使Nginx不僅可以輕鬆地充當Web伺服器,而且還可以輕鬆地充當代理伺服器,負載平衡器和HTTP快取。
同樣,在Apache vs Nginx競賽中,NGINX在傳輸速率(資料從伺服器傳送到到用戶端的速度)方面再次獲勝。在大多數情況下,Nginx會以500/100的價格獲勝。
Apache vs Nginx 優勝者:
Nginx似乎因為其更快的解釋和響應而贏得了勝利。
功能模組:
兩者均可通過模組系統延伸。但是它們的工作模式是不同的。讓我們比較一下兩個Web伺服器的功能模組:
Apache 阿帕奇:
60個可以開啟/關閉的官方動態可加載模組
Apache伺服器具有一組豐富的功能,可以通過安裝60個正式模組之一來啟用。在網際網路上也可以輕鬆找到許多其他非官方模組。
它的模組系統容許您動態加載或卸載模組以滿足您的需求。可以開啟或關閉其模組,以加入或刪除功能並掛接到主伺服器。
簡而言之,Apache有幾個功能模組可以滿足您的需求,但是其中許多功能模組並不經常使用。
NGINX:
第三方核心模組(不可動態加載)
另一方面,選取Nginx並將其編譯到第三方外掛程式的過程中。
無法動態加載。儘管這些模組很有用,但它們僅容許您包括要使用的功能,就可以指示您希望從伺服器中獲得什麼。
它被認為比Apache伺服器安全得多,因為可以將任意元件掛接到伺服器中。
此外,NGINX提供了Web伺服器的所有核心功能,而不會犧牲使之成功的輕量級和高效能的質量。
注意:Apache就像Microsoft Word,而Nginx就像記事本。怎麼樣?
Apache有上百萬種選取,但您只需要少數選取。 NGINX可以完成「一些」操作,並且速度比Apache快50倍。
優勝者:
NGiNX –重要性不高的功能和模組使它比Apache更輕巧,更智慧,更好。
彈性:
對於Web伺服器,彈性是最重要的問題之一。 Apache vs Nginx的彈性存在一些有趣的差異。
Apache 阿帕奇:
支援通過動態模組自訂Web伺服器。
可以通過騎行模組對Web伺服器進行自訂。
Apache加載動態模組的時間最長,因此所有Apache模組都支援此功能。
NGINX:
不夠靈活,無法支援動態模組和加載。
但是,NGINX並非如此。 2016年初,NGINX獲得了對動態模組加載的支援;以前,NGINX需要管理員將模組編譯為NGINX二進製檔案。
大多數模組尚不支援動態加載,但是隨著時間的推移它們可能會支援動態加載。
優勝者:Apache –在這一點上顯然很重要。
安全:
Apache vs Nginx安全再次成為爭論的話題。嗯,這兩個Web伺服器為其基於C的代碼庫提供了出色的延伸安全性。
因此,使用者,放鬆一下!
Apache 阿帕奇:
安全性高。
Apache確保在其伺服器上運行的所有網站均不受任何危害和黑客侵害。
因此,它提供了用於DDoS攻擊處理的配置技巧,以及用於響應HTTP DoS,DDoS或暴力攻擊的mod_evasive模組。
關於安全性和Apache,您必須閱讀我們有關cPanel安全性的詳細文章。安全的cPanel表示安全的網站。
NGINX:
較小的代碼庫可提供更好的安全性。
但是,NGINX代碼庫要小很多個數量級,因此從具有前瞻性的安全性角度來看,這絕對是一大優勢。
NGINX還提供了最近的安全公告清單。在Nginx部落格上閱讀有關緩解DDoS攻擊的文章。
優勝者:Nginx –被認為更安全
在支援方面:
支援是每個客戶都渴望的東西。它可以成敗您的使用者體驗。在比較Apache與Nginx的支援時,似乎沒有太大的區別。
Apache阿帕奇:
社區支援通過信件清單,IRC和堆疊溢出來完成。
許多第三方公司(例如OpenLogic)都可以提供商業Apache支援,但Apache Foundation並未維護任何正式清單。 Apache伺服器旨在為其所有使用者提供強大的支援。
NGINX:
通過信件清單,IRC,Stack Overflow和論壇提供社區支援。
NGINX背後的公司提供了一種名為NGINX Plus的商業產品,該產品支援有關負載平衡,媒體流和監視的一系列附加功能。
優勝者:這是一個平局!兩者的支援幾乎相同。兩個Web伺服器都很棒。
以下是Apache與NGINX的比較表作為摘要:
Apache 阿帕奇 vs Nginx 最終:
Apache和Nginx不能互相替代,它們各有千秋。在探討了優點,局限和區別之後,您可能已經對您的最佳Web伺服器有所瞭解。
好吧,在我們關於Apache vs Nginx的文章中,NGINX贏得了9分中的5分,Apache獲得了2分,Apache和Nginx之間有2分是「平局」。
因此,我們可以清楚地看到,NGINX領先於Apache。
仍然對哪種伺服器更適合您感到困惑?讓我們找出–何時選取哪個!
通過NGINX選取Apache時?
1.Apache .htaccess
NGINX不支援Apache的.htaccess檔案。但是,使用Apache,您將獲得優勢,使非特權使用者可以控制其網站的某些重要方面。
顯然,不容許使用者編輯主配置。
使用.htaccess檔案,您可以按目錄覆蓋系統範圍的設定。
為了獲得最佳效能,請在主配置檔中包括這些.htaccess偽指令。
在共享的託管環境中,Apache具有.htaccess配置,因此效果更好。
附言對於私人主機或VPS,Nginx保持最佳選取。
2.在功能限制的情況下–使用 Apache
Nginx有一些非常重要的核心模組。但是,Nginx有一些功能限制。
如果存在某些限製或需要使用Nginx不支援的其他模組,則可能要選取Apache。
在Apache上選取NGINX時?
A.快速靜態內容處理:
Nginx在處理特定目錄中的靜態檔案方面可以做得更好。
而且,上游伺服器程式不會因為繁重的多個靜態內容請求而被阻止,因為Nginx可以同時處理它們。這顯著提高了後端伺服器的整體效能。
Nginx一直在努力為使用者提供更好的體驗。它在2018年顯示出驚人的增長。在Nginx部落格上瀏覽一下2018年的主要收穫。
B.非常適合高流量網站:
如果我們談論速度以及在高負載下可以為多少客戶提供服務,那麼Nginx將永遠是Apache的贏家。
這使得Nginx非常輕巧,非常適合伺服器資源。這就是為什麼大多數Web開發人員更喜歡Nginx而不是Apache。
特別是,如今的電子商店僱用了一個Magento開發人員,該開發人員知道如何在人流量大的網站上工作,並且擅長於Nginx。
簡而言之,當要為擁有大量流量的網站提供服務時,Nginx是無可匹敵的。
或是,同時使用兩者-一起使用!
是的,Apache和Nginx也可以成為朋友!可以通過一起使用每個伺服器優勢。
您可以將Apache前面的Nginx用作伺服器代理(如下圖所示)。這利用了Nginx的快速處理速度和同時建立大量連線的能力。
Apache阿帕奇 vs Nginx:
對於靜態連線,Nginx將檔案快速提供給用戶端。
對於動態內容(例如Php檔案),Nginx反向代理伺服器會將其請求代理到Apache,然後Apache可以處理其結果並返回其呈現的頁面。
然後,Nginx可以將最終內容傳遞給用戶端。而且,它使您擁有功能強大的Web伺服器,可以非常快速地為客戶(大量使用者)提供服務。
Apache vs Nginx競賽結束了!
結論:
確定將使用哪個Web伺服器(Nginx或Apache)是設定網站的重要步驟。
兩種解決專案均能夠處理各種工作負載,並能夠與其他軟體一起提供完整的Web堆疊。
我們希望該端到端比較說明指南能夠說明您選取最適合您的Web伺服器。