NGINX簡(jiǎn)單介紹

Nginx是由俄羅斯軟件工程師Igor Sysoev(塞索耶夫)開(kāi)發(fā)的一個(gè)高性能的HTTP和反向代理服務(wù)器,基于C語(yǔ)言編寫(xiě)姜贡。

Nginx最大的特點(diǎn)是對(duì)高并發(fā)的支持和高效的負(fù)載均衡猾漫,在高并發(fā)的需求場(chǎng)景下蚣抗,是Apache服務(wù)器不錯(cuò)的替代品锉走。

Nginx用于WEB服務(wù)器吩谦,相較于Apache扇售,Nginx使用更少的資源前塔,支持更多的并發(fā)鏈接嚣艇,體現(xiàn)更高的效率。

能夠支持高達(dá)50000個(gè)并發(fā)的連接數(shù)的響應(yīng)华弓。(理論上Nginx支持的并發(fā)鏈接上限取決于你的內(nèi)存)

Nginx用于負(fù)載均衡服務(wù)器時(shí)食零,可以通過(guò)其負(fù)載均衡的內(nèi)置策略和擴(kuò)展實(shí)現(xiàn)。

將負(fù)載分?jǐn)偟讲煌姆?wù)單元寂屏,既保證服務(wù)的可用性贰谣,又保證響應(yīng)足夠快,給用戶(hù)良好的體驗(yàn)迁霎。

Nginx最早開(kāi)發(fā)這個(gè)產(chǎn)品的目的之一是作為郵件代理服務(wù)器吱抚。

Nginx的特性:

模塊化設(shè)計(jì)。較好的擴(kuò)展性考廉。

高可靠性:一個(gè)master process(監(jiān)控進(jìn)程)啟動(dòng)一或多個(gè)工作線(xiàn)程秘豹,每個(gè)線(xiàn)程響應(yīng)多個(gè)請(qǐng)求。

低內(nèi)存消耗:10000個(gè)keepalive連接在Nginx中僅消耗2.5MB內(nèi)存(官方數(shù)據(jù))

支持熱部署:不停機(jī)更新配置文件昌粤、更新日志文件憋肖、更新服務(wù)器程序版本

處理響應(yīng)請(qǐng)求快:在正常的情況下,單次請(qǐng)求會(huì)得到更快的響應(yīng)婚苹。在高峰期岸更,Nginx可以比其他的Web服務(wù)器更快的響應(yīng)請(qǐng)求。

Nginx的內(nèi)部結(jié)構(gòu)是由核心部分和一系列的功能模塊所組成膊升。

模塊化的優(yōu)點(diǎn):

使得每個(gè)模塊的功能相對(duì)簡(jiǎn)單怎炊,便于開(kāi)發(fā)和對(duì)系統(tǒng)進(jìn)行功能擴(kuò)展。

增強(qiáng)了Nginx源碼的可讀性廓译、可擴(kuò)充性和可維護(hù)性评肆。

Nginx的模塊:

從功能上分:

Handlers(處理器模塊)。此類(lèi)模塊直接處理請(qǐng)求非区,并進(jìn)行輸出內(nèi)容和修改headers信息等操作瓜挽。

Handlers處理器模塊一般只能有一個(gè)。

Filters (過(guò)濾器模塊)征绸。此類(lèi)模塊主要對(duì)其他處理器模塊輸出的內(nèi)容進(jìn)行修改操作久橙,最后由Nginx輸出。

Proxies (代理類(lèi)模塊)管怠。此類(lèi)模塊是Nginx的HTTP Upstream之類(lèi)的模塊

主要與后端一些服務(wù)比如FastCGI等進(jìn)行交互淆衷,實(shí)現(xiàn)服務(wù)代理和負(fù)載均衡等功能。

工作過(guò)程:

HTTP發(fā)出請(qǐng)求給Nginx內(nèi)核渤弛,Nginx內(nèi)核將請(qǐng)求發(fā)送給一個(gè)Handler處理器模塊祝拯,Handler處理HTTP請(qǐng)求,產(chǎn)生輸出給Filter

過(guò)濾器模塊她肯,過(guò)濾器模塊將內(nèi)容進(jìn)行處理產(chǎn)生新的輸出佳头,將輸出發(fā)送給HTTP鹰贵,HTTP響應(yīng)請(qǐng)求。

從結(jié)構(gòu)上分:

核心模塊:構(gòu)建nginx基礎(chǔ)服務(wù)康嘉,管理其他模塊砾莱。HTTP模塊、EVENT模塊和MAIL模塊

基礎(chǔ)模塊(HTTP核心模塊):HTTP Access模塊凄鼻、HTTP FastCGI模塊腊瑟、HTTP Proxy模塊和HTTP Rewrite模塊,

第三方模塊:HTTP Upstream Request Hash模塊块蚌、Notice模塊和HTTP Access Key模塊闰非。

核心模塊:

ngx_mail_module(定義mail模塊)————————→Mail模塊

ngx_http_module(定義http模塊)————————→Http模塊

ngx_openssl_module

ngx_events_module(定義事件event模塊)——→Event模塊

ngx_errlog_module

ngx_core_module

配置模塊:ngx_conf_module

Nginx的策略

內(nèi)置策略有3種,輪詢(xún)峭范、加權(quán)輪詢(xún)财松、IP hash

Nginx 默認(rèn)提供輪詢(xún)(round robin)作為負(fù)載均衡策略。

每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器纱控,如果后端服務(wù)器down掉辆毡,能自動(dòng)剔除。

加權(quán)輪詢(xún)(weighted round robin)

指定輪詢(xún)幾率甜害,weight和訪(fǎng)問(wèn)比率成正比舶掖,用于后端服務(wù)器性能不均的情況。

IP Hash

每個(gè)請(qǐng)求按訪(fǎng)問(wèn)ip的hash結(jié)果分配尔店,這樣每個(gè)訪(fǎng)客固定訪(fǎng)問(wèn)一個(gè)后端服務(wù)器眨攘,可以解決session的問(wèn)題。

擴(kuò)展策略有2種嚣州,url hash鲫售、fair

Fair

按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配该肴。

url_hash

按訪(fǎng)問(wèn)url的hash結(jié)果來(lái)分配請(qǐng)求情竹,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效匀哄。

tips:

upstream bakend{? #定義負(fù)載均衡設(shè)備的Ip及設(shè)備狀態(tài)

ip_hash;

server 127.0.0.1:9090 down;

server 127.0.0.1:8080 weight=2;

server 127.0.0.1:6060;

server 127.0.0.1:7070 backup;

}

在需要使用負(fù)載均衡的server中增加

proxy_pass http://bakend/;

每個(gè)設(shè)備的狀態(tài)設(shè)置為:

1.down 表示單前的server暫時(shí)不參與負(fù)載

2.weight 默認(rèn)為1.weight越大秦效,負(fù)載的權(quán)重就越大。

3.max_fails :允許請(qǐng)求失敗的次數(shù)默認(rèn)為1.當(dāng)超過(guò)最大次數(shù)時(shí)拱雏,返回proxy_next_upstream 模塊定義的錯(cuò)誤

4.fail_timeout:max_fails次失敗后棉安,暫停的時(shí)間底扳。

5.backup: 其它所有的非backup機(jī)器down或者忙的時(shí)候铸抑,請(qǐng)求backup機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕衷模。

Nginx的進(jìn)程詳解

主進(jìn)程主要完成如下工作:

讀取并驗(yàn)證配置信息鹊汛;

創(chuàng)建蒲赂、綁定及關(guān)閉套接字;

啟動(dòng)刁憋、終止及維護(hù)worker進(jìn)程的個(gè)數(shù)滥嘴;

無(wú)須中止服務(wù)而重新配置工作特性;

控制非中斷式程序升級(jí)至耻,啟用新的二進(jìn)制程序并在需要時(shí)回滾至老版本若皱;

重新打開(kāi)日志文件,實(shí)現(xiàn)日志滾動(dòng)尘颓;

編譯嵌入式perl腳本走触;

worker進(jìn)程主要完成的任務(wù)包括:

接收、傳入并處理來(lái)自客戶(hù)端的連接疤苹;

提供反向代理及過(guò)濾功能互广;

nginx任何能完成的其它任務(wù);

cache loader進(jìn)程主要完成的任務(wù)包括:

檢查緩存存儲(chǔ)中的緩存對(duì)象卧土;

使用緩存元數(shù)據(jù)建立內(nèi)存數(shù)據(jù)庫(kù)惫皱;

cache manager進(jìn)程的主要任務(wù):

緩存的失效及過(guò)期檢驗(yàn);

進(jìn)程和線(xiàn)程的區(qū)別

一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線(xiàn)程尤莺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旅敷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颤霎,更是在濱河造成了極大的恐慌扫皱,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捷绑,死亡現(xiàn)場(chǎng)離奇詭異韩脑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)粹污,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)段多,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人壮吩,你說(shuō)我怎么就攤上這事进苍。” “怎么了鸭叙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵觉啊,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我沈贝,道長(zhǎng)杠人,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嗡善,結(jié)果婚禮上辑莫,老公的妹妹穿的比我還像新娘。我一直安慰自己罩引,他們只是感情好各吨,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著袁铐,像睡著了一般揭蜒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剔桨,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天忌锯,我揣著相機(jī)與錄音,去河邊找鬼领炫。 笑死偶垮,一個(gè)胖子當(dāng)著我的面吹牛倦西,可吹牛的內(nèi)容都是我干的放案。 我是一名探鬼主播奄喂,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼渠鸽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸽嫂!你這毒婦竟也來(lái)了顿颅?” 一聲冷哼從身側(cè)響起怔揩,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蔗坯,失蹤者是張志新(化名)和其女友劉穎砰奕,沒(méi)想到半個(gè)月后蛛芥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡军援,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年仅淑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胸哥。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涯竟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出空厌,到底是詐尸還是另有隱情庐船,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布嘲更,位于F島的核電站筐钟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赋朦。R本人自食惡果不足惜篓冲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一李破、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纹因,春花似錦喷屋、人聲如沸琳拨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)狱庇。三九已至惊畏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間密任,已是汗流浹背颜启。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浪讳,地道東北人缰盏。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像淹遵,于是被迫代替她去往敵國(guó)和親口猜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容