nginx

目錄

一些好的文檔
基本模塊介紹:虛擬主機(jī)蒲牧,匹配規(guī)則撇贺,反向代理,熱備和冷備冰抢,負(fù)載均衡和weight松嘶,hash和緩存命中率 等
一些案例:結(jié)合host,post接口轉(zhuǎn)發(fā)

一些好的文檔

Nginx官網(wǎng)
Nginx中文文檔
Nginx熱點(diǎn)微博

基本模塊

虛擬主機(jī)server

http {
    server {
          listen          80;
          server_name     www.domain1.com;
          access_log      logs/domain1.access.log main;
          location / {
                    index index.html;
                    root  /var/www/domain1.com/htdocs;
          }
     }

     server {
          listen          80;
          server_name     www.domain2.com;
          access_log      logs/domain2.access.log main;
          location / {
                    index index.html;
                    root  /var/www/domain2.com/htdocs;
          }
      }
  }

  IP黑白名單
  server {
       server_name    *****
       .....
       allow   x.x.x.x/32;
       allow   y.y.y.y/32;
       deny   all;
       .....
  }
  
  server {
       .....
       deny   x.x.x.x/32;
       deny   y.y.y.y/32;
       .....
  }

location匹配規(guī)則
http://www.nginx.cn/115.html
=           精確匹配會(huì)第一個(gè)被處理挎扰,如果發(fā)現(xiàn)精確匹配翠订,nginx停止搜索其他匹配
普通字符匹配  正則表達(dá)式規(guī)則和長的塊規(guī)則將被優(yōu)先和查詢匹配,也就是說如果該項(xiàng)匹配還需要去看看有沒有正則表達(dá)式匹配和更長的匹配
 ^~         只匹配該規(guī)則遵倦,nginx停止搜索其他匹配項(xiàng)尽超,否則nginx會(huì)繼續(xù)處理其他location指令
 ~和~*     匹配里帶有這兩個(gè)的,如果找到相應(yīng)匹配則ng停止搜索其他匹配梧躺;當(dāng)沒有正則表達(dá)式或沒有正則表達(dá)式被匹配的情況下似谁,那么匹配程度最高的逐字匹配指令被使用

如下是個(gè)demo:
匹配優(yōu)先級(jí)demo.png
配置反向代理
proxy_pass 指令  ,見下面的demo
http://www.nginx.cn/927.html

熱備和冷備 
down掠哥,表示當(dāng)前的server暫時(shí)不參與負(fù)載均衡巩踏。
backup,預(yù)留的備份機(jī)器续搀。當(dāng)其他所有的非backup機(jī)器出現(xiàn)故障或者忙的時(shí)候蛀缝,才會(huì)請求backup機(jī)器,因此這臺(tái)機(jī)器的壓力最輕目代。
max_fails,允許請求失敗的次數(shù)嗤练,默認(rèn)為1榛了。當(dāng)超過最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤煞抬。
fail_timeout霜大,在經(jīng)歷了max_fails次失敗后,暫停服務(wù)的時(shí)間革答。max_fails可以和fail_timeout一起使用战坤。
熱備和冷備.png

負(fù)載均衡和weight
  weight 輪詢(默認(rèn))曙强。每個(gè)請求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端某臺(tái)服務(wù)器宕機(jī)途茫,故障系統(tǒng)被自動(dòng)剔除碟嘴,使用戶訪問不受影響。weight囊卜。指定輪詢權(quán)值娜扇,weight值越大,分配到的訪問機(jī)率越高栅组,主要用于后端每個(gè)服務(wù)器性能不均的情況下雀瓢。
  ip_hash。每個(gè)請求按訪問IP的hash結(jié)果分配玉掸,這樣來自同一個(gè)IP的訪客固定訪問一個(gè)后端服務(wù)器刃麸,有效解決了動(dòng)態(tài)網(wǎng)頁存在的session共享問題。
  fair(第三方)司浪。比上面兩個(gè)更加智能的負(fù)載均衡算法泊业。此種算法可以依據(jù)頁面大小和加載時(shí)間長短智能地進(jìn)行負(fù)載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來分配請求断傲,響應(yīng)時(shí)間短的優(yōu)先分配脱吱。Nginx本身是不支持fair的,如果需要使用這種調(diào)度算法认罩,必須下載Nginx的upstream_fair模塊箱蝠。
  url_hash(第三方)。按訪問url的hash結(jié)果來分配請求垦垂,使每個(gè)url定向到同一個(gè)后端服務(wù)器宦搬,可以進(jìn)一步提高后端緩存服務(wù)器的效率。Nginx本身是不支持url_hash的劫拗,如果需要使用這種調(diào)度算法间校,必須安裝Nginx的hash軟件包。

如圖:
負(fù)載均衡和weight.png

hash
注意:當(dāng)負(fù)載調(diào)度算法為ip_hash時(shí)页慷,后端服務(wù)器在負(fù)載均衡調(diào)度中的狀態(tài)不能是weight和backup憔足。
hash和緩存命中率.png

一些案例

 1.結(jié)合host
  
  ng.conf 如下:

  upstream  machine_001{  #定義服務(wù)組
       server  192.168.1.1:8080
  }

  upstream  machine_002{
       server  192.168.1.2:8080
  }

  server{
       listen  192.168.x.21:80
       server_name  domain.beta.qunar.com
       ...
       location /  {
                 proxy_pass  http://machine_001;
                 ...
       }
  }

    server{
       listen  192.168.x.121:80
       server_name  domain.beta.qunar.com
       ...
       location /  {
                 proxy_pass  http://machine_002;
                 ...
       }
  }

  服務(wù)器host中對應(yīng)配置走具體機(jī)器:
  #192.168.x.121    domain.beta.qunar.com
  192.168.x.21     domain.beta.qunar.com

2.post請求,根據(jù)param不同做轉(zhuǎn)發(fā)

  upstream machine_001 {    #定義服務(wù)組
    server IP_001_1:port_001;
    server IP_001_2:port_001;

    #hash $remote_addr;
    #hash_again 10; # hash次數(shù)需要大于5次

    healthcheck_enabled;           #healthcheck檢查
    healthcheck_delay 3000;
    healthcheck_timeout 1000;
    healthcheck_failcount 2;
    healthcheck_send 'GET /healthcheck.html HTTP/1.0' 'Host: qunar.com' 'Connection: close';
}

upstream machine_002 {
     server IP_002_1:port_002;
     server IP_002_2:port_002;
     ....
}

upstream machine_003 {
     server IP_003_1:port_003;
     server IP_003_2:port_003;
     ....
}

server {
    ....
    listen       ****;
    server_name  machine.com;

   ... ... 
    location /xxxyyy  {
        set $target ''; 
        access_by_lua '
        ngx.req.read_body()
        local data = ngx.req.get_body_data()
        if not data then
           -- ngx.log(ngx.ERR, "No request body found")
           -- ngx.exit(500)
           ngx.var.target = "machine_001"
        elseif string.match(data, "參數(shù)=參數(shù)值") then
            ngx.var.target = "machine_001"
        elseif string.match(data, "參數(shù)=參數(shù)值") then
            ngx.var.target = "machine_002"
        else
            ngx.var.target = "machine_003"
            -- ngx.log(ngx.ERR, "Missing env data")
        end
         ';
        proxy_pass http://$target;
        proxy_set_header Host $host;
        proxy_set_header X-Real-Scheme $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /mmmnn {
        proxy_pass http://machine_001;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-Scheme    $scheme;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酒繁,一起剝皮案震驚了整個(gè)濱河市滓彰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌州袒,老刑警劉巖揭绑,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異郎哭,居然都是意外死亡他匪,警方通過查閱死者的電腦和手機(jī)菇存,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邦蜜,“玉大人依鸥,你說我怎么就攤上這事∑枧牵” “怎么了毕籽?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長井辆。 經(jīng)常有香客問我关筒,道長,這世上最難降的妖魔是什么杯缺? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任蒸播,我火速辦了婚禮,結(jié)果婚禮上萍肆,老公的妹妹穿的比我還像新娘袍榆。我一直安慰自己,他們只是感情好塘揣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布包雀。 她就那樣靜靜地躺著,像睡著了一般亲铡。 火紅的嫁衣襯著肌膚如雪才写。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天奖蔓,我揣著相機(jī)與錄音赞草,去河邊找鬼。 笑死吆鹤,一個(gè)胖子當(dāng)著我的面吹牛厨疙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疑务,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沾凄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了知允?” 一聲冷哼從身側(cè)響起搭独,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎廊镜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唉俗,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗤朴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年配椭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雹姊。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡股缸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吱雏,到底是詐尸還是另有隱情敦姻,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布歧杏,位于F島的核電站镰惦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏犬绒。R本人自食惡果不足惜旺入,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凯力。 院中可真熱鬧茵瘾,春花似錦、人聲如沸咐鹤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祈惶。三九已至雕旨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間行瑞,已是汗流浹背奸腺。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留血久,地道東北人突照。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脯爪。 傳聞我的和親對象是個(gè)殘疾皇子绽慈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

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