【Nginx】Nginx概述
00. 目錄
文章目錄
- 00. 目錄
- 01. 什么是Nginx
- 02. Nginx特點
- 0.3 參考
01. 什么是Nginx
Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個 IMAP/POP3/SMTP 代理服務器。Nginx 是由俄羅斯人 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。Igor Sysoev 在建立的項目時,使用基于 BSD 許可。
到 2019 年,目前有很多國內網站采用 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。對 proxy 和 rewrite 模塊的支持很徹底,還支持 mod_fcgi、ssl、vhosts ,適合用來做 mongrel clusters 的前端 HTTP 響應。
英文主頁:http://nginx.net 。
02. Nginx特點
Nginx 做為 HTTP 服務器,有以下幾項基本特性:
- 處理靜態文件,索引文件以及自動索引;打開文件描述符緩沖.
- 無緩存的反向代理加速,簡單的負載均衡和容錯.
- FastCGI,簡單的負載均衡和容錯.
- 模塊化的結構。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCGI 或其它代理服務器處理單頁中存在的多個 SSI,則這項處理可以并行運行,而不需要相互等待。
- 支持 SSL 和 TLSSNI.
Nginx特點:
-
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 將繼續以高速的增長率來分享輕量級 HTTP 服務器市場,會有一個更美好的未來。
0.3 參考
3.1 W3CSchool資料: https://www.w3cschool.cn/nginx/3gdi1pdv.html
總結
以上是生活随笔為你收集整理的【Nginx】Nginx概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Nginx】初探 Nginx 架构
- 下一篇: Nginx —— 检查配置文件ngi