標籤:nginx apache
本文絕大多數資料都是摘抄網上,自己做的只就是整合網上零散的資源然後加上自己的一點見解。簡單的說apache httpd和nginx都是web伺服器,但兩者適應的情境不同,也就是兩者專註於解決不同的問題。apache httpd:穩定、對動態請求處理強,但同時高並發時效能較弱,耗費資源多。nginx:高並發處理能力強、擅長處理靜態請求、反向 Proxy、均衡負載。
1、nginx相對於apache的優點:輕量級,同樣起web服務,比apache佔用更少的記憶體及資源,並發能力強,nginx處理請求是非同步非阻塞模式,而apache則是同步阻塞模式,在高並發下nginx能保持低資源低消耗高效能,高度模組化的設計,編寫模組相對簡單,社區活躍,高效能模組出品迅速。
apche相對於nginx的優點:rewrite能力比nginx強大,模組超多,基本想到的都可以找到。apache的bug相比於nginx較少,比較穩定。一般來說,需要效能的web 服務,用nginx 。如果不需要效能只求穩定,那就用apache。
同步、非同步、阻塞和非阻塞區別:
(1)同步:所謂同步,就是在發出一個功能調用時,在沒有得到結果之前,該調用就不返回。
(2)非同步:非同步概念和同步相對。當一個非同步程序呼叫發出後,調用者不能立刻得到結果。實際處理這個調用的組件在完成後,通過狀態、通知和回調來通知調用者。
(3)阻塞:阻塞調用是指調用結果返回之前,當前線程會被掛起。函數只有在得到結果之後才會返回。有人也許會把阻塞調用和同步調用等同起來,實際上它們是不同的。對於同步調用來說,很多時候當前線程還是啟用的,只是從邏輯上當前函數沒有返回而已。
(4)非阻塞:非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回。
2、nginx配置簡單,apache配置複雜,nginx靜態處理效能比apache高3倍以上,但對動態處理請求弱。apache對PHP支援比較簡單,nginx需要配合其他後端用,apache的組件比nginx多,現在nginx才是web伺服器的首選。
3、最核心的區別在於apache是同步多進程模型,一個串連對應一個進程;nginx是非同步,多個串連(萬層級)可以對應一個進程。nginx與apache兩者處理請求的模型不同,直接導致了兩點:(1) nginx的抗並發能力強很多。(2)nginx對資源需求更少。
4、nginx與apache結合使用。nginx的負載能力強,靜態處理效能高,可以用作前端負責進行抗並發、負載平衡、做靜態檔案快取,apache相對穩定,可用作後端處理動態請求。
5、nginx處理動態請求是雞肋,一般動態請求要apache去做,nginx只適合靜態和反向。
6、nginx優於apache的主要兩點:1.nginx本身就是一個反向 Proxy伺服器 2.nginx支援7層負載平衡;其他的當然,nginx可能會比apache支援更高的並發,但是根據NetCraft的統計,2011年4月的統計資料,apache依然佔有62.71%,而Nginx是7.35%,因此總得來說,apache依然是大部分公司的首選。
7、nginx設定檔簡潔,正則配置讓很多事情變得簡單,運行效率高,佔用資源少,代理功能強大,很適合做前端響應伺服器。
8、作為 Web 服務器:相比 apache,nginx 使用更少的資源,支援更多的並發串連,體現更高的效率,這點使 Nginx 尤其受到虛擬機器主機供應商的歡迎。在高串連並發的情況下,nginx是apache伺服器不錯的替代品: nginx在美國是做虛擬機器主機生意的老闆們經常選擇的軟體平台之一. 能夠支援高達 50,000 個並發串連數的響應, 感謝nginx為我們選擇了 epoll and kqueue 作為開發模型。nginx作為負載平衡伺服器: Nginx 既可以在內部直接支援 Rails 和 PHP 程式對外進行服務, 也可以支援作為 HTTP代理 伺服器對外進行服務。nginx採用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多.作為郵件Proxy 伺服器: nginx 同時也是一個非常優秀的郵件Proxy 伺服器(最早開發這個產品的目的之一也是作為郵件Proxy 伺服器), Last.fm 描述了成功並且美妙的使用經驗。nginx 是一個安裝非常的簡單 , 設定檔非常簡潔(還能夠支援perl文法), Bugs 非常少的伺服器: Nginx 啟動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠不間斷服務的情況下進行軟體版本的升級。
nginx與apache的區別及優缺點比較