Nginx學習筆記

簡介

Nginx是一款輕量級的web服務(wù)器秦踪、反向代理服務(wù)器芍殖。

Nginx的Master-Worker模式

Nginx啟動后其實就是在80端口啟動了socket服務(wù)進行監(jiān)聽不傅。
Master負責讀取并按照配置文件宝冕、管理一個或多個Worker姓言。
每一個Worker進程的維護一個線程寻狂,處理連接和請求岁经;其中Worker進程個數(shù)由配置文件決定
,一般和CPU個數(shù)相關(guān)蛇券。

思考:Nginx掛了怎么辦缀壤?

Keepalived+Nginx實現(xiàn)高可用。
第一:請求不要直接打到Nginx上纠亚,應(yīng)該先通過Keepalived(這就是所謂虛擬IP塘慕,VIP)
第二:Keepalived應(yīng)該能監(jiān)控Nginx的生命狀態(tài)(提供一個用戶自定義的腳本,定期檢查Nginx進程狀態(tài)蒂胞,進行權(quán)重變化,图呢,從而實現(xiàn)Nginx故障切換)

動靜分離

靜態(tài)文件放在Nginx,


動靜分離.png

反向代理和正向代理

正向代理.png

例子:使用vpn代理訪問外網(wǎng)骗随。叫村里的小盆友幫忙買辣條蛤织,在這里小盆友就充當代理,商店就充當服務(wù)端鸿染,而“你”充當客戶端指蚜。
反向代理:


反向代理.png

總結(jié):

正向代理:代理的是客戶端;這個時候服務(wù)端是不知道真正的客戶端牡昆。
反向代理:代理的是服務(wù)端姚炕;這個時候客戶端是不知道真正的服務(wù)端。
反向代理demo

#啟動進程,通常設(shè)置成和cpu的數(shù)量相等
worker_processes  1;

events {
    #單個后臺worker process進程的最大并發(fā)鏈接數(shù)   
    worker_connections  1024;
    # 并發(fā)總數(shù)是 worker_processes 和 worker_connections 的乘積
}
http {
    #設(shè)定mime類型,類型由mime.type文件定義
    include       mime.types;
    default_type  application/octet-stream;

    #sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來輸出文件丢烘,
    #對于普通應(yīng)用柱宦,必須設(shè)為 on,
    #如果用來進行下載等應(yīng)用磁盤IO重負載應(yīng)用,可設(shè)置為 off播瞳,
    sendfile        on;
    #連接超時時間
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  127.0.0.01;   

        location / {     #location / 表示處理所有請求
            proxy_pass http://192.168.20.1:8080;   #代理的服務(wù)端
        }

        # 定義錯誤提示頁面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

負載均衡

Nginx支持4種負載均衡算法:
1.輪詢算法:
默認情況下掸刊,nginx使用輪詢算法根據(jù)權(quán)重分發(fā)請求到相應(yīng)的服務(wù)器,可以通過server指令的weight參數(shù)指定權(quán)重赢乓,默認權(quán)重為1

upstream balanceServer{
    server localhost:8080 weight=1 max_fails=2 fail_timeout=30s;
    server localhost:8888 weight=2 max_fails=2 fail_timeout=30s;
 # 即在 30s 內(nèi)嘗試 2 次失敗即認為主機不可用 
}
# weight表示權(quán)重忧侧,值越大,被分配到的幾率越大牌芋。 
#可以為每個 backserver 指定最大的重試次數(shù)蚓炬,
#和重試時間間隔,所使用的關(guān)鍵字是 max_fails 和 fail_timeout。



# 代理
location / {
    proxy_pass http://balanceServer;
}

2.ip_hash:
每個請求按訪問IP的hash結(jié)果分配躺屁,同一個IP客戶端固定訪問一個后端服務(wù)器肯夏。可以保證來自同一ip的請求被打到固定的機器上犀暑,可以解決session問題驯击。

upstream ipServer { 
      server 10.3.134.99; 
      server 10.3.134.111;     
      ip_hash;
    }

location / {
    proxy_pass http://ipServer ;
}

3.url_hash:
按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器耐亏。

upstream backend {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}

4.fair:
這是比上面兩個更加智能的負載均衡算法徊都。此種算法可以依據(jù)頁面大小和加載時間長短智能地進行負載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時間來分配請求广辰,響應(yīng)時間短的優(yōu)先分配暇矫。Nginx本身是不支持 fair的,如果需要使用這種調(diào)度算法择吊,必須下載Nginx的 upstream_fair模塊

upstream ipServer { 
      server 10.3.134.99; 
      server 10.3.134.111;     
      fair;
}

思考:Nginx如何做到高并發(fā)下的高效處理袱耽?

Nginx采用了Linux的epoll模型,epoll模型基于事件驅(qū)動機制干发,它可以監(jiān)控多個事件是否準備完畢朱巨,如果OK,那么放入epoll隊列中枉长,這個過程是異步的冀续。worker只需要從epoll隊列循環(huán)處理即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末必峰,一起剝皮案震驚了整個濱河市洪唐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吼蚁,老刑警劉巖凭需,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件问欠,死亡現(xiàn)場離奇詭異,居然都是意外死亡粒蜈,警方通過查閱死者的電腦和手機顺献,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枯怖,“玉大人注整,你說我怎么就攤上這事《认酰” “怎么了肿轨?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蕊程。 經(jīng)常有香客問我椒袍,道長,這世上最難降的妖魔是什么藻茂? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任槐沼,我火速辦了婚禮,結(jié)果婚禮上捌治,老公的妹妹穿的比我還像新娘岗钩。我一直安慰自己,他們只是感情好肖油,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布兼吓。 她就那樣靜靜地躺著,像睡著了一般森枪。 火紅的嫁衣襯著肌膚如雪视搏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天县袱,我揣著相機與錄音浑娜,去河邊找鬼。 笑死式散,一個胖子當著我的面吹牛筋遭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暴拄,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼没隘,長吁一口氣:“原來是場噩夢啊……” “哼廊鸥!你這毒婦竟也來了隆箩?” 一聲冷哼從身側(cè)響起秀存,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撕蔼,沒想到半個月后豁鲤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秽誊,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年琳骡,在試婚紗的時候發(fā)現(xiàn)自己被綠了锅论。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡日熬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肾胯,到底是詐尸還是另有隱情竖席,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布敬肚,位于F島的核電站毕荐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏艳馒。R本人自食惡果不足惜憎亚,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弄慰。 院中可真熱鬧第美,春花似錦、人聲如沸陆爽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慌闭。三九已至别威,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驴剔,已是汗流浹背省古。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丧失,地道東北人豺妓。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像布讹,于是被迫代替她去往敵國和親科侈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361