歡迎您光臨本站 註冊首頁

· nginx vs apache雜誌閱讀

Nginx vs Apache兩大web server比較

admin @ 2020-04-17 reply:0

Nginx vs Apache兩大web server比較


網際網路從90年代開始席捲全球,現如今基本上所有業務都可以在網際網路上完成,網際網路已經成為我們生活中不可或缺的一部分。

那么網際網路web協議是怎樣的呢?可以概括為訪問者從給定的Web站點請求文件,而DNS和IP系統將該請求轉發到正確的計算機。這臺託管請求的網頁的計算機將把網頁提供給訪問者。

網頁本質上是HTML文件。為了能夠向訪問者提供不同的網頁,提供服務的機器需要一個伺服器程式。 Nginx和Apache就是這個提供服務的的軟體程式,它們可以處理請求進行分析,然後將使用者所需要的文件資訊返回給訪問者。

Nginx與Apache

Nginx和Apache都是非常流行的Web伺服器。

Apache於1995年首次發布,Nginx於2004年發布。兩者都被全球500強的大型公司使用。Nginx的市場份額多年來一直在穩定增長。在某些情況下,Nginx在效能方面更具有競爭優勢。Apache

隨著蒂姆伯納斯李建立了html,之後Apache就佔據著web伺服器的主導地位。現在發行的linux伺服器,無論是redhat還是ubuntu,apache都是預設自帶的伺服器,因此,很多人都是使用Apache來進行web開發的,畢竟人家作業系統已經給你提供好了。

apache受歡迎的一個點就是他的.htacess檔案配置管理。

Apache使用.htaccess進行配置,它為處理傳入請求的方式提供了很大的靈活性。不同的重定向規則,最大上傳檔案大小,URL重寫,記憶體限制,目錄保護,header頭資訊,cookie,查詢字元串操作。

在伺服器根目錄中,目錄樹中的每個級別或目錄都可以具有自己的.httaccess檔案,並具有自己的配置。

對於共享主機提供商,這是一個夢想,因為他們可以在同一臺計算機上為數百個使用者提供一種配置其網站服務方式的方式,而不會影響其他網站。客戶可以在受限的共享託管環境中配置許多詳細資訊,而無需接觸全域性伺服器配置。

但是,這種靈活性是以效能為代價的:「無論您實際上是否使用它們,允許.htaccess檔案都會導致效能下降!」

每次啟用.htaccess檔案時,Apache都必須從請求的URL或檔案中遍歷整個目錄樹,直到所有的更高階別,直到伺服器的根目錄,然後針對每個請求載入它們。

apache還有一個受歡迎的點是他的模組機制。

Apache便允許使用者安裝模組,然後根據需要啟用/禁用它們。

apahce有很多好用的模組,比如壓縮,加密,日誌記錄,重定向到更高階的內容,例如使用高階語法編輯請求和響應,正是有了這些模組,才讓Apache處理請求更加多樣化。

nginx

Nginx(也稱為nginx或NGINX)是在2004年由俄羅斯開發人員Igor Sysoev首次公開發行的。

Nginx是專門為解決Apache Web伺服器的效能限制而編寫的。

Nginx發布後,主要用於提供靜態檔案,並在Apache安裝之前用作負載平衡器或反向代理。 隨著網路的發展以及對速度和硬體使用效率的高要求,越來越多的網站開始使用Nginx完全替換Apache,這也要歸功於更成熟的軟體。

現在市場上nginx的份額已經超過了Apache,很多大公司都開始採用nginx作為後端的web伺服器,有些大公司甚至會修改nginx的部分程式碼來使用,比如我們熟知的Tengine。

nginx最初設計的時候就是模組化的思想,它的所有功能都是採用模組形式提供的,需要什么功能,只要對應載入相應的模組就可以。

nginx一直都在全速發展著,目前最新的web技術quic和http3也已經在最新版的nginx中提供實現了。

快取

apahce和nginx都提供了快取功能。apache有mod_cache模組,nginx也有fastcgi快取。可以說沒有快取的web系統幾乎不可能支撐如今高訪問的情況。當然,說道快取,最專業的還是Varnish HTTP。不過因為nginx可以和它完美地結合,所以這也是越來越多人擁抱nginx的一個理由。

apache和nginx處理請求方式

apache和nginx最大的不同在於它們處理請求的方式。

apache使用MPM(Multi-Processing-Modules)處理請求。

早期的mpm是prefork模組。在這種模式下,Apache會在每個請求中生成一個執行緒的新程序。該模組與mod_php一起使用,意味著Apache伺服器在每個程序中都嵌入了一個PHP直譯器,雖然可能這個請求只是請求css等靜態檔案。這是非常低效的。

在後來的幾年中,Apache開發了多執行緒工作程式mpm,之後又開發了事件mpm。它們都減輕了許多Apache的效能問題。切換到php-fpm使得Apache仍然可以成為當今競爭性的解決方案,並且消除了.htaccess的使用,這讓apache的處理效率提升了很多。

Nginx使用非同步,非阻塞事件來處理請求。

簡而言之,Apache對每個連線都使用程序(對於worker mpm,它使用執行緒)。隨著流量的增加,它很快變得太昂貴了。

事件mpm在優化方面更進一步,但是一些測試表明它不能超過Nginx。尤其是當我們談論靜態檔案時,Nginx的服務量是Apache的兩倍。

Nginx理想情況下,每個CPU /核心只有一個工作程序。 Nginx工作程序的區別在於,每個工作程序可以處理每個工作程序成千上萬的傳入網路連線。無需為每個連線建立新的執行緒或程序。

總結

從目前的的發展眼光來看,nginx卻是比apache的效能更優越,而且有越來越多的輔助外掛構建在nginx上面,所以,如果你的web專案剛起步,建議您選擇nginx來作為伺服器,它可以給你提供更優秀的效能體驗,當然,對於中小型專案來說,apahce依然也是不錯的選擇。特別是他的.htaccess確實非常好用。

[admin via ] Nginx vs Apache兩大web server比較已經有532次圍觀

http://coctec.com/magazine/show-post-item-27.html