目錄
HTTP中間件
Apache
Apache的內部處理模型
Nginx
Nginx的內部處理模型
綜合對比
負載平衡
首頁 運維 Nginx Apache HTTP和Nginx引擎哪個比較好

Apache HTTP和Nginx引擎哪個比較好

May 11, 2023 pm 03:49 PM
http apache nginx

HTTP中間件

當我們在瀏覽器中輸入一個網頁連結後,瀏覽器基於HTTP(s)傳輸協定向對應的伺服器發送請求,伺服器收到對應的請求後經過處理,返回對應的資訊給瀏覽器,然後由瀏覽器解析http中的內容,以網頁的形式表現出來。

伺服器負責接收請求,並在處理之後返回相應的數據,而其中又可以細分為處理http連接的服務部分和執行服務內容的應用部分( WordPress使用PHP產生所需的頁面,就屬於應用程式部分)

而不論應用部分執行的是何種應用,處理http連接的部分幾乎是相同的,所以出現了專門處理http連接的中間件,目前最常見的是ApacheNginx

Apache

正式名稱是“Apache HTTP Server”,是一款開源的HTTP伺服器中間件,誕生於1995年,曾經是HTTP服務領域的龍頭老大,擁有大量的使用者和豐富的社群資源。 Apache的一大優點就是方便與Wordpress等CMS軟體進行集成,只需要簡單的設定就能建立一個基於CMS的網站。

Apache的內部處理模型

內部建構方面,Apache採用多進程的方式,每有一個連接就會為這個連接開闢一個進程,專門用於處理這個連線上的請求,直到連線結束。這樣做的好處是:

  • 來自不同客戶端的連接會立刻得到相應且互不干擾,而且不會因為某一個服務佔用了較長的時間而使其它的連接得不到響應。

但是缺點也是顯而易見的:

  • #當同時存取數比較多的時候,Apache會建立大量的進程,佔用過多的記憶體資源。

  • 大量執行緒間的調度也會造成CPU處理能力的大量浪費。

由此產生了被稱為C10K的難題,C即客戶端(Client),10K是指1萬,即不論伺服器的效能和網絡頻寬有多高,Apache都難以同時處理1萬個以上的連線。

Nginx

讀作Engine-X,就像Apache一樣也是用來HTTP服務的開源中介軟體,誕生於2004年。 NginxApache的歷史要短,但是正因為是後來者,Nginx吸取了Apache的教訓,在設計初期就考慮到了處理大量連線時的效率問題,解決了諸如C10K等隨著網路規模壯大而產生的難題。

Nginx的內部處理模型

Nginx採用了非阻塞IO和非同步訊息驅動的方式,即在稱為worker 的執行緒中使用循環來處理佇列中的連線請求。而根據硬體的情況,可以設定多個worker線程,充分利用CPU的核心資源。

  • 解決了處理大量連線時消耗記憶體過多,調度效率低的問題,同時還能充分的利用所有的CPU核心。在相同硬體下處理並發連線的能力是Apache的10到100倍。

但是Nginx這種方式也不是沒有缺點。

  • 當伺服器單核心效能較差時,基於CMS的動態網站可能需要較長的時間來執行一個請求,此時來自其他客戶端的請求將無法立即執行。當CPU核心數較少,worker執行緒不足時會更明顯。

好在現在伺服器的效能越來越強,在AMD的帶領下CPU核心數也越來越多,Nginx的缺點足以被彌補,而高效的優勢也愈發顯現出來。

綜合對比

Apache Nginx處理能力有限10-100倍是否會被複雜任務阻塞否有可能會設定難度比較簡單相對複雜社區資源豐富相對較少

近年來,Nginx的市場佔有率不斷提高,2019年已經達到了和Apache持平的水平。而對於有極大訪問量的大型網站,可以看到訪問量越大,Nginx的佔比就越高。這也從側面印證了Nginx在處理大量存取時的優越效能。

負載平衡

Nginx除了可以作為HTTP伺服器使用,其強大的反向代理功能還被廣泛地用作負載平衡前端伺服器,逐漸取代了基於硬體的負載平衡器。

Nginx中可以設定若干個後端伺服器,Nginx在收到HTTP請求之後依照一定規則(輪詢,IP哈希,優先隨機)等將請求轉發給後端伺服器,實現負載在多台伺服器上的平均或加權分配。

同時作為負載平衡的前端還能快取後端回傳的數據,緩解後端伺服器的壓力。前端採用Nginx做負載平衡限制每個伺服器的連線數,後端伺服器運行Apache的模式也不少見。

硬體負載平衡器的業界大佬F5 networks在2019年收購了Nginx,推出了包含收費服務的負載平衡解決方案Nginx

以上是Apache HTTP和Nginx引擎哪個比較好的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

nginx403怎麼解決 nginx403怎麼解決 Apr 14, 2025 am 10:33 AM

如何解決 Nginx 403 Forbidden 錯誤?檢查文件或目錄權限;2. 檢查 .htaccess 文件;3. 檢查 Nginx 配置文件;4. 重啟 Nginx。其他可能原因還包括防火牆規則、SELinux 設置或應用程序問題。

nginx403錯誤怎麼解決 nginx403錯誤怎麼解決 Apr 14, 2025 pm 12:54 PM

服務器無權訪問所請求的資源,導致 nginx 403 錯誤。解決方法包括:檢查文件權限。檢查 .htaccess 配置。檢查 nginx 配置。配置 SELinux 權限。檢查防火牆規則。排除其他原因,如瀏覽器問題、服務器故障或其他可能的錯誤。

怎麼解決nginx跨域問題 怎麼解決nginx跨域問題 Apr 14, 2025 am 10:15 AM

解決 Nginx 跨域問題有兩種方法:修改跨域響應頭:添加指令以允許跨域請求,指定允許的方法和頭,以及設置緩存時間。使用 CORS 模塊:啟用模塊並配置 CORS 規則,允許跨域請求、方法、頭和設置緩存時間。

linux怎麼啟動nginx linux怎麼啟動nginx Apr 14, 2025 pm 12:51 PM

在 Linux 中啟動 Nginx 的步驟:檢查 Nginx 是否已安裝。使用 systemctl start nginx 啟動 Nginx 服務。使用 systemctl enable nginx 啟用在系統啟動時自動啟動 Nginx。使用 systemctl status nginx 驗證啟動是否成功。在 Web 瀏覽器中訪問 http://localhost 查看默認歡迎頁面。

nginx304錯誤怎麼解決 nginx304錯誤怎麼解決 Apr 14, 2025 pm 12:45 PM

問題的答案:304 Not Modified 錯誤表示瀏覽器已緩存客戶端請求的最新資源版本。解決方案:1. 清除瀏覽器緩存;2. 禁用瀏覽器緩存;3. 配置 Nginx 允許客戶端緩存;4. 檢查文件權限;5. 檢查文件哈希;6. 禁用 CDN 或反向代理緩存;7. 重啟 Nginx。

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

nginx怎麼查看運行狀態 nginx怎麼查看運行狀態 Apr 14, 2025 am 11:48 AM

查看 Nginx 運行狀態的方法有:使用 ps 命令查看進程狀態;查看 Nginx 配置文件 /etc/nginx/nginx.conf;使用 Nginx 狀態模塊啟用狀態端點;使用 Prometheus、Zabbix 或 Nagios 等監控工具。

See all articles