有很多人都在說Nginx比Apache好、比Apache快的這類說法,因為大家對apache和nginx選哪個的概念也比較模糊,什么情況下選Nginx,什么情況下選Apache ,今天我們來聊下這個問題
Apache是什么?
Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網頁服務器,可以在大多數計算機操作系統中運行,由于其多平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。
Apache 的特性有哪些:
1、支持最新的HTTP/1.1通信協議
2、擁有簡單而強有力的基于文件的配置過程
3、支持通用網關接口
4、支持基于IP和基于域名的虛擬主機
5、支持多種方式的HTTP認證
6、集成Perl處理模塊
7、集成代理服務器模塊
8、支持實時監視服務器狀態和定制服務器日志
9、支持服務器端包含指令(SSI)
10、支持安全Socket層(SSL)
11、提供用戶會話過程的跟蹤
12、支持FastCGI
13、通過第三方模塊可以支持JavaServlets
Nginx是什么?
Nginx是一個來自俄羅斯的流行的Web應用服務器,它被應用于大量的俄羅斯的高并發站點,俄羅斯的搜索引擎網站Rambler就是基于Nginx構建的。Nginx對靜態頁面的支持相當出色,輕量且免費。Nginx不支持CGI,但是支持更靈活的FastCGI。PHP5.2及之前的版本比較多的是使用PHP-FPM來管理PHP FastCGI進程。PHP-FPM使用給PHP源碼打補丁后編譯的方式讓新手多少有些難上手,但從PHP 5.3.2開始內置PHP-FPM,只需編譯PHP時啟用PHP-FPM。
Nginx的特性有哪些:
1、處理靜態文件,索引文件以及自動索引;打開文件描述符緩沖
2、無緩存的反向代理加速,簡單的負載均衡和容錯
3、FastCGI,簡單的負載均衡和容錯
4、模塊化的結構。包括gzipping, byte ranges, chunked responses, 以及 SSI-filter等filter。如果由FastCGI或其它代理服務器處理單頁中存在的多個SSI,則這項處理可以并行運行,而不需要相互等待
5、支持SSL 和 TLS SNI
Nginx專為性能優化而開發,性能是其最重要的考量, 實現上非常注重效率 。它支持內核Poll模型,能經受高負載的考驗, 有報告表明能支持高達 50,000 個并發連接數。
nginx 相對 apache 的優點:
1、 輕量級,同樣起web 服務,比apache 占用更少的內存及資源
2、抗并發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發下nginx 能保持低資源低消耗高性能
3、 高度模塊化的設計,編寫模塊相對簡單
4、社區活躍,各種高性能模塊出品迅速啊
5、 nginx處理靜態文件好,耗費內存少
6、 Nginx 配置簡潔, Apache 復雜
apache 相對nginx 的優點:
1、 rewrite方面比nginx 的rewrite 強大
2、模塊超多,基本想到的都可以找到
3、 bug比較少 ,nginx 的bug 相對較多
4、 比較穩定
5、Apache 對 PHP 支持比較簡單,Nginx 需要配合其他后端用
6、Apache 的組件比 Nginx 多
總結:服務器該用Nginx還是Apache?
1、作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的并發連接,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。在高連接并發的情況下,Nginx是Apache服務器不錯的替代品: Nginx在美國是做虛擬主機生意的老板們經常選擇的軟件平臺之一. 能夠支持高達 50,000 個并發連接數的響應, 感謝Nginx為我們選擇了 epoll and kqueue 作為開發模型。
2、Nginx作為負載均衡服務器: Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務, 也可以支持作為 HTTP代理 服務器對外進行服務. Nginx采用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多.
作為郵件代理服務器: Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器), Last.fm 描述了成功并且美妙的使用經驗。
3、Nginx 是一個安裝非常的簡單 , 配置文件非常簡潔(還能夠支持perl語法), Bugs 非常少的服務器: Nginx 啟動特別容易, 并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動. 你還能夠不間斷服務的情況下進行軟件版本的升級 。
4、最核心的區別在于apache是同步多進程模型,一個連接對應一個進程;nginx是異步的,多個連接(萬級別)可以對應一個進程。
apache運行php比較好,適合跑動態,nginx比較適合跑靜態?,F在流行的lanmp架構就是同時使用apache和nginx,靜態網頁有nginx處理,動態交由apache處理,這樣就能更大限度的發揮服務器性能。
更多有關服務器部署的資訊,請聯系藍暢客服
本文來自網絡 由藍暢整理,經授權后發布,本文觀點不代表Infocode藍暢信息技術立場,轉載請聯系原作者。