Nginx簡介–nginx系列之一
什麼是HTTP伺服器?
HTTP伺服器的基本功能就是提供Web資訊瀏覽服務。它只需支援HTTP協議、HTML文件格式及URL。與客戶端的網路瀏覽器配合。因為Web伺服器主要支援的協議就是HTTP,所以通常情況下HTTP伺服器和WEB伺服器是相等的(有沒有支援除HTTP之外的協議的web伺服器)。目前常見的http伺服器以及市場份額如下圖:
什麼是Nginx
Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,Nginx,它的發音為“engine X”,是一個高效能的HTTP和反向代理伺服器,同時也是一個IMAP / POP3 / SMTP代理伺服器。由俄羅斯人Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,它已經在該站點執行超過兩年半了.Igor Sysoev在建立的專案時,使用基於BSD許可。
英文主頁:http://nginx.net。
到2013年,目前有很多國內網站採用Nginx作為Web伺服器,如國內知名的新浪,163,騰訊,Discuz,豆瓣等。據netcraft統計,Nginx排名第3,約佔15%的份額(參見:http: //news.netcraft.com/archives/category/web-server-survey/)
Nginx以事件驅動的方式編寫,所以有非常好的效能,同時也是一個非常高效的反向代理,負載平衡。其擁有匹配Lighttpd的效能,同時還沒有Lighttpd的記憶體洩漏問題,而且Lighttpd的mod_proxy也有一些問題並且很久沒有更新。
現在,Igor將原始碼以類BSD許可證的形式釋出.Nginx因為它的穩定性,豐富的模組庫,靈活的配置和低系統資源的消耗而聞名。業界一致認為它是Apache2.2 + mod_proxy_balancer的輕量級代替者,不僅是因為響應靜態頁面的速度非常快,而且它的模組數量達到Apache的近2/3。對代理和重寫模組的支援很徹底,還支援mod_fcgi,ssl,vhosts,適合用來做雜種群的前端HTTP響應。
Nginx 特點
Nginx 做為 HTTP 伺服器,有以下幾項基本特性:
-
處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符緩衝.
-
無快取的反向代理加速,簡單的負載均衡和容錯.
-
FastCGI,簡單的負載均衡和容錯.
-
模組化的結構。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCGI 或其它代理伺服器處理單頁中存在的多個 SSI,則這項處理可以並行執行,而不需要相互等待。
-
支援 SSL 和 TLSSNI.
Nginx 專為效能優化而開發,效能是其最重要的考量,實現上非常注重效率 。它支援核心 Poll 模型,能經受高負載的考驗,有報告表明能支援高達 50,000 個併發連線數。
Nginx 具有很高的穩定性。其它 HTTP 伺服器,當遇到訪問的峰值,或者有人惡意發起慢速連線時,也很可能會導致伺服器實體記憶體耗盡頻繁交換,失去響應,只能重啟伺服器。例如當前 apache 一旦上到 200 個以上程式,web響應速度就明顯非常緩慢了。而 Nginx 採取了分階段資源分配技術,使得它的 CPU 與記憶體佔用率非常低。Nginx 官方表示保持 10,000 個沒有活動的連線,它只佔 2.5M 記憶體,所以類似 DOS 這樣的攻擊對 Nginx 來說基本上是毫無用處的。就穩定性而言,Nginx 比 lighthttpd 更勝一籌。
Nginx 支援熱部署。它的啟動特別容易, 並且幾乎可以做到 7*24 不間斷執行,即使執行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟體版本進行進行升級。
Nginx 採用 master-slave 模型,能夠充分利用 SMP 的優勢,且能夠減少工作程式在磁碟 I/O 的阻塞延遲。當採用 select()/poll() 呼叫時,還可以限制每個程式的連線數。
Nginx 程式碼質量非常高,程式碼很規範,手法成熟,模組擴充套件也很容易。特別值得一提的是強大的 Upstream 與 Filter 鏈。Upstream 為諸如 reverse proxy,與其他伺服器通訊模組的編寫奠定了很好的基礎。而 Filter 鏈最酷的部分就是各個 filter 不必等待前一個 filter 執行完畢。它可以把前一個 filter 的輸出做為當前 filter 的輸入,這有點像 Unix 的管線。這意味著,一個模組可以開始壓縮從後端伺服器傳送過來的請求,且可以在模組接收完後端伺服器的整個請求之前把壓縮流轉向客戶端。
Nginx 採用了一些 os 提供的最新特性如對 sendfile (Linux2.2+),accept-filter (FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支援,從而大大提高了效能。
當然,Nginx 還很年輕,多多少少存在一些問題,比如:Nginx 是俄羅斯人建立,雖然前幾年文件比較少,但是目前文件方面比較全面,英文資料居多,中文的資料也比較多,而且有專門的書籍和資料可供查詢。
後續內容繼續更新….
相關文章
- Nginx 簡介Nginx
- NGINX簡介Nginx
- Linux學習系列之一:在centos 7.5上安裝nginx 以及簡單配置LinuxCentOSNginx
- 簡單介紹nginx 變數使用Nginx變數
- RxJS 系列之一 – Functional Programming 簡介JSFunction
- nginx系列-概念Nginx
- 簡單介紹nginx反向代理及使用Nginx
- Shiro系列教程之一Shiro簡介
- Spring Security系列教程之一簡介Spring
- [分散式]Nginx系列文章---深入淺出Nginx分散式Nginx
- Nginx簡介和常用的一些配置Nginx
- 介紹下NginxNginx
- 【Kubernetes系列】第6篇 Ingress controller - nginx元件介紹ControllerNginx元件
- Nginx簡單操作Nginx
- Nginx 極簡教程Nginx
- Nginx 相關介紹Nginx
- Nginx 入門介紹Nginx
- Nginx服務系列——代理Nginx
- Nginx 安裝配置介紹Nginx
- 介紹Nginx配置支援PHPNginxPHP
- 採坑系列2-nginxNginx
- nginx的gzip指令介紹,Nginx的gzip指令使用小結Nginx
- Linux下玩轉nginx系列(二)——nginx配置檔案說明LinuxNginx
- Linux下玩轉nginx系列(五)---nginx實現負載均衡LinuxNginx負載
- Linux下玩轉nginx系列(七)---nginx如何實現限流功能LinuxNginx
- 【Nginx】Nginx容器Nginx
- kafka之一:kafka簡介Kafka
- Nginx服務詳細介紹Nginx
- Nginx 教程:基本概念介紹Nginx
- nginx介紹(二) 架構篇Nginx架構
- 入門系列之在Nginx配置GzipNginx
- Nginx服務系列——負載均衡Nginx負載
- 簡單介紹Nginx tp3.2.3 404問題解決方案Nginx
- Linux下玩轉nginx系列(六)---nginx實現cache(快取)服務LinuxNginx快取
- Linux下玩轉nginx系列(三)---nginx日誌配置檔案說明LinuxNginx
- nginx部署及簡單優化Nginx優化
- Nginx 簡單應用(Windows os)NginxWindows
- nginx大道至簡之反向代理Nginx
- 簡單介紹Windows中將Nginx新增為服務的問題WindowsNginx