1、輕量級,採用c進行編寫,同樣的web服務,會占用更少的記憶體及資源。
2、抗併發,nginx以epollandkqueue作為開發模型,處理請求是非同步非阻塞的,負載能力比apache高很多,而apache則是阻塞型的。在高併發下nginx能保持低資源低消耗高效能,而apache在php處理慢或者前端壓力很大的情況下,很容易出現程序數飆公升,從而拒絕服務的現象。
3、nginx在開啟時,會生成乙個master程序,然後,master程序會fork多個worker子程序,最後每個使用者的請求由worker的子執行緒處理。
4、可以配置nginx的upstream實現nginx的反向**。
5、nginx作為負載均衡伺服器,支援7層負載均衡。
6、nginx處理靜態檔案好,靜態處理效能比apache高三倍以上。
7、支援高併發連線,每秒最多的併發連線請求理論可以達到50000個。
8、nginx配置簡潔,正則配置讓很多事情變得簡單,而且改完配置能使用-t測試配置有沒有問題,apache配置複雜,重啟的時候發現配置出錯了,會很崩潰。
9、用執行緒處理使用者請求,而執行緒是共享記憶體的,只需要開啟少量程序,多個執行緒就可以共享程序的記憶體,占用記憶體小。
10、乙個程序死掉時,會影響到多個使用者的使用,穩定性差。
11、nginx的設計高度模組化,編寫模組相對簡單。
12、nginx本身就是乙個反向**伺服器,而且可以作為非常優秀的郵件**伺服器。
13、啟動特別容易,並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動,還能夠不間斷服務的情況下進行軟體版本的公升級。
14、社群活躍,各種高效能模組出品迅速。
1、select同步阻塞。
2、乙個連線對應乙個程序。
3、用程序處理使用者請求,用mpm(多處理模組)來繫結到網路埠上,接受請求,排程子程序處理請求。
4、當使用者請求過多時,開啟的程序較多,占用記憶體大,每秒最多的併發連線請求最多不超過3000個。
5、乙個程序死掉時,不會影響其他的使用者
6、apache的rewrite比nginx強大,在rewrite頻繁的情況下,用apache。
7、apache發展到現在,模組超多,基本想到的都可以找到。
8、apache更為成熟,少bug,nginx的bug相對較多。
9、apache超穩定。
10、apache對php支援比較簡單,nginx需要配合其他後端用。
11、apache在處理動態請求有優勢,一般動態請求要apache去做,nginx適合靜態和反向。
12、apache仍然是目前的主流,擁有豐富的特性,成熟的技術和開發社群。
兩者最核心的區別在於apache是同步多程序模型,乙個連線對應乙個程序,而nginx是非同步的,多個連線(萬級別)可以對應乙個程序。一般來說,需要效能的web服務,用nginx。如果不需要效能只求穩定,更考慮apache,apache的各種功能模組實現比nginx好,例如ssl的模組就比nginx好,可配置項多。epoll(freebsd上是kqueue)網路io模型是nginx處理效能高的根本理由,但並不是所有的情況下都是epoll大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個檔案,apache的select模型或許比epoll更高效能。當然,這只是根據網路io模型的原理作的乙個假設,真正的應用還是需要實測。更為通用的方案是,前端nginx抗併發,後端apache集群,配合起來會更好。
Nginx 靜態資源Web服務
注 非伺服器動態生成的檔案 1 瀏覽器端渲染 html css js 2 jpeg gif png 1 配置語法 檔案讀取 2 配置語法 tcp nopush sendfile開啟情況下,提高網路包傳輸效率 3 配置語法 tcp nodelay keeplive連線下,提高網路包的傳輸實時性 注 無...
Nginx服務系列 靜態資源web服務
sendfile on off 預設off http server location if in location tcp nopush on off 預設off http server location sendfile開啟的情況下,提高網路包的傳輸效率 tcp nodelay on off 預設...
Nginx服務系列 靜態資源web服務
sendfile on off 預設off http server location if in location tcp nopush on off 預設off http server location sendfile開啟的情況下,提高網路包的傳輸效率 tcp nodelay on off 預設...