Nginx初識—Nginx服務器簡介

一丶Nginx是什麼

沒有聽過Nginx?那麼一定聽過它的“同行”Apache吧!Nginx同Apache一樣都是一種WEB服務器。基於REST架構風格,以統一資源描述符(Uniform Resources Identifier)URI或者統一資源定位符(Uniform Resources Locator)URL作爲溝通依據,通過HTTP協議提供各種網絡服務。

然而,這些服務器在設計之初受到當時環境的侷限,例如當時的用戶規模,網絡帶寬,產品特點等侷限並且各自的定位和發展都不盡相同。這也使得各個WEB服務器有着各自鮮明的特點。

Apache的發展時期很長,而且是毫無爭議的世界第一大服務器。它有着很多有點:穩定、開源、跨平臺等等。但是由於它出現的時間太長了。它興起的年代,互聯網產業遠比不上現在。所以它被設計爲一個重量級的。不支持高併發的服務器。在Apache上運行數以萬計的併發訪問,會導致服務器消耗大量內存。操作系統對其進行進程或線程間的切換也消耗了大量的CPU資源,導致HTTP請求的平均響應速度降低。

這些都決定了Apache不可能成爲高性能WEB服務器,輕量級高併發服務器Nginx和Lighttpd就應運而生了。

二丶Nginx產生

又是拜大神的時候了,這次被選中的人是俄羅斯的工程師Igor Sysoev,他在爲Rambler Media工作期間,使用C語言開發了Nginx。Nginx作爲WEB服務器一直爲Rambler Media提供出色而又穩定的服務。

然後呢,Igor Sysoev將Nginx代碼開源,並且賦予自由軟件許可證。

由於:

·Nginx使用基於事件驅動架構,使得其可以支持數以百萬級別的TCP連接

·高度的模塊化和自由軟件許可證是的第三方模塊層出不窮(這是個開源的時代啊~)

·Nginx是一個跨平臺服務器,可以運行在Linux, FreeBSD, Solaris, AIX, Mac OS, Windows等操作系統上

·這些優秀的設計帶來的極大的穩定性。

於是,duang的一下。Nginx火了。

三丶lighttpd

Lighttpd是一個具有非常低的內存開銷,cpu佔用率低,效能好,以及豐富的模塊等特點。lighttpd是衆多OpenSource輕量級的web server中較爲優秀的一個。支持FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能。

Lighttpd使用fastcgi方式運行PHP,它會使用很少的PHP進程響應很大的併發量。

四丶Fastcgi的優點在於:

·從穩定性上看, fastcgi是以獨立的進程池運行來cgi,單獨一個進程死掉,系統可以很輕易的丟棄,然後重新分配新的進程來運行邏輯.

·從安全性上看, fastcgi和宿主的server完全獨立, fastcgi怎麼down也不會把server搞垮,

·從性能上看, fastcgi把動態邏輯的處理從server中分離出來, 大負荷的IO處理還是留給宿主server, 這樣宿主server可以一心一意作IO,對於一個普通的動態網頁來說, 邏輯處理可能只有一小部分, 大量的圖片等靜態IO處理完全不需要邏輯程序的參與

·從擴展性上講, fastcgi是一箇中立的技術標準, 完全可以支持任何語言寫的處理程序php,Java,Python

·五丶Apache

apache是世界排名第一的web服務器, 根據netcraft所作的調查,世界上百分之五十以上的web服務器在使用apache.

1995年4月, 最早的apache(0.6.2版)由apache group公佈發行. apache group 是一個完全通過internet進行運作的非盈利機構, 由它來決定apache web服務器的標準發行版中應該包含哪些內容. 准許任何人修改隱錯, 提供新的特徵和將它移植到新的平臺上, 以及其它的工作. 當新的代碼被提交給apache group時, 該團體審覈它的具體內容, 進行測試 如果認爲滿意, 該代碼就會被集成到apache的主要發行版中。

apache 的特性:

·幾乎可以運行在所有的計算機平臺上

·支持最新的http/1.1協議

·簡單而且強有力的基於文件的配置(httpd.conf)

·支持通用網關接口(cgi)

·支持虛擬主機

·支持http認證

·集成perl

·集成的代理服務器

·可以通過web瀏覽器監視服務器的狀態, 可以自定義日誌

·支持服務器端包含命令(ssi)

·支持安全socket層(ssl)

·具有用戶會話過程的跟蹤能力

·支持fastcgi

·支持Java

Nginx

Nginx以事件驅動的方式編寫,所以有非常好的性能,同時也是一個非常高效的反向代理、負載平衡。其擁有匹配 Lighttpd的性能,同時還沒有Lighttpd的內存泄漏問題,而且Lighttpd的mod_proxy也有一些問題並且很久沒有更新。但是Nginx並不支持cgi方式運行,原因是可以減少因此帶來的一些程序上的漏洞。所以必須使用FastCGI方式來執行PHP程序。

nginx做爲HTTP服務器,有以下幾項基本特性:

·處理靜態文件,索引文件以及自動索引;打開文件描述符緩衝

·無緩存的反向代理加速,簡單的負載均衡和容錯

·FastCGI,簡單的負載均衡和容錯

·模塊化的結構。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服務器處理單頁中存在的多個SSI,則這項處理可以並行運行,而不需要相互等待。

Nginx專爲性能優化而開發,性能是其最重要的考量,實現上非常注重效率。它支持內核Poll模型,能經受高負載的考驗,有報告表明能支持高達 50,000個併發連接數。

Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峯值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啓服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的CPU與內存佔用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只佔2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。

Nginx支持熱部署。它的啓動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啓動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。

總結

到這裏深入理解Java 類加載器基本概念及模式結束了,不足之處還望大家多多包涵!!覺得收穫的話可以點個關注收藏轉發一波喔,謝謝大佬們支持。(吹一波,233~~)

下面和大家交流幾點編程的經驗:

1、多寫多敲代碼,好的代碼與紮實的基礎知識一定是實踐出來的

2丶 測試、測試再測試,如果你不徹底測試自己的代碼,那恐怕你開發的就不只是代碼,可能還會聲名狼藉。

3丶 簡化算法,代碼如惡魔,在你完成編碼後,應回頭並且優化它。從長遠來看,這裏或那裏一些的改進,會讓後來的支持人員更加輕鬆。

最後,每一位讀到這裏的網友,感謝你們能耐心地看完。希望在成爲一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步。

想了解學習以上內容可加羣722040762 驗證:(009)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章