市場上WEB伺服器產品眾多,主流的當數Apache和Nginx。可是Apache和Nginx之間該如何選擇,也讓許多新手有些困惑。本文透過Apache和Nginx驚進行對比,讓大家有更清楚的理解與選擇。
一、介紹
Apache:
Apache創立於1995年,並從1999 年開始在Apache 軟體基金會旗下進行開發。 Apache靈活、高效,擁有豐富的擴充模組,以及活躍的社群支持,成為目前世界上最為主流的開源免費的Web伺服器軟體。
Nginx:
Nginx是由俄羅斯軟體工程師Igor Sysoev編寫的免費開源Web伺服器。自從2004年上市以來,nginx專注於高效能,高並發性和低記憶體使用。並且其在負載平衡,緩存,存取和頻寬控制以及與各種應用程式高效整合等方面的特性,都使得它逐步深受廣大用戶青睞。
以下是2017年11月21日更新的最新web伺服器市場份額比較圖:
##二、對比
雖然Apache和Nginx各自的背景不同,但他們的作用目的是一致的,簡單說就是接收使用者請求,然後處理請求,最後將處理結果回傳給使用者。 1.連結處理Apache和Nginx最大的差異在於它們對連線的處理方式。 Apache提供一系列多重處理模組,透過這些多重處理模組來使用作業系統的資源,對進程和執行緒池進行管理,控制處理使用者請求。 Apache提供了三種多重處理模組:mpm_prefork、mpm_worker、mpm_envent,下面我們要簡單說明比較。 mpm_prefork:模組產生眾多子程序,每個子程序是單線程的,每個線程鏈接一個請求,如此一對一的關係。所以如果請求數大於進程數時,伺服器的效能就表現得差強人意了。#2.靜態與動態內容的處理
無論是靜態還是動態內容,Apache都可以處理,Apache具有內建的解析和執行各種動態腳本語言(包括PHP,Python和Perl)的功能,無需借助外部處理器。 毫無疑問,動態內容處理恐怕是Nginx的痛點。 Nginx處理動態內容的效率並不高,且需藉助外部的處理器。所以如果您的網站具有許多動態功能,Apache的表現可能會更切合你意。不過雖然與Apache相比Nginx的動態內容處理能力不佳,但其靜態內容處理還是很有效率的。三、總結
Apache擁有豐富的模組元件支持,穩定性強,BUG少,動態內容處理強。 Nginx輕量級,佔用資源少,負載平衡,高並發處理強,靜態內容處理高效。 存在即有道理,Apache和Nginx作為WEB服務各有所長,個人認為二者並不存在將來誰會完全取代誰。關鍵在於使用者要認真考慮清楚自己的應用場景,根據自己的需求和情況來斟酌選擇哪個產品,適合自己的才是最好的。相關閱讀:
#如何在Ubuntu 16.04下方設定Apache HTTP Serve
CentOS7中apache與php7及mysql5.7的安裝設定詳解
LNMP環境更換Nginx伺服器為Tengine的範例程式碼
以上是Apache和Nginx如何選擇的詳細內容。更多資訊請關注PHP中文網其他相關文章!