乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Nginx(三):反向代理負(fù)載均衡集群配置詳解

       笑觀云卷云舒 2017-10-14

      概述:

          本篇主要總結(jié)Nginx實(shí)現(xiàn)反向代理和負(fù)載均衡功能相關(guān)模塊的配置說明。主要使用到的模塊如下:

      ngx_http_proxy_module

      Nginx實(shí)現(xiàn)反向代理功能

      ngx_http_upstream_module

      Nginx反向代理時(shí)實(shí)現(xiàn)負(fù)載均衡、會(huì)話保持等功能

      一、Nginxhttp/https協(xié)議反向代理(ngx_http_proxy_module)

        1.反向代理

              反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)站在服務(wù)器角度來看,代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)反向代理服務(wù)器。

              對(duì)反向代理服務(wù)器的攻擊并不會(huì)使得后端內(nèi)網(wǎng)Web服務(wù)器上網(wǎng)頁信息遭到破壞,增強(qiáng)了Web服務(wù)器的安全性。

       

        2.ngx_http_proxy_module配置

          (1) proxy_pass URL;  定義反向代理到的路徑

         適用范圍:location, if in location, limit_except上下文中;URL為完整的路徑

      注意:

         匹配location后傳遞給后端請(qǐng)求路徑情況解析( REMOTE-IP:后端主機(jī)IP地址)

          1) proxy_pass后面的路徑不帶uri時(shí),其會(huì)將location的uri直接傳遞給后端的主機(jī)(直接補(bǔ)充關(guān)系);

      location  /uri/{

      proxy_pass http://REMOTE-IP;

      }

        此時(shí)傳遞給后端的請(qǐng)求路徑為:http://REMOTE-IP/uri/,直接補(bǔ)充在REMOTE-IP之后

         2) proxy_pass后面的路徑是一個(gè)uri時(shí),其會(huì)將location的uri替換為后端主機(jī)自己new_uri(映射關(guān)系)

      location  /uri/{

      proxy_pass http://REMOTE-IP/new_uri/;

      }

        此時(shí)客戶端請(qǐng)求被location/uri/匹配到,跳轉(zhuǎn)到后端請(qǐng)求路徑將由/new uri/替換/uri/http://REMOTE-IP/new_uri/

          3) 如果location定義其uri時(shí)使用的正則表達(dá)式模式匹配,則proxy_pass后的路徑不能夠使用uri;

      location ~*  \.(jpg|gif|jpeg)$  {

      proxy_pass http://REMOTE-IP;

      }

          此處的http://REMOT-IP后面不能有任何uri,"/"也不(/相對(duì)路徑,相當(dāng)于后端的DocumentRoot/root路徑)

          (2) proxy_set_header  field value;

                    用于proxy server向后端服務(wù)主機(jī)發(fā)請(qǐng)求報(bào)文時(shí),將某請(qǐng)求首部重新賦值,或在原有值后面添加一個(gè)新的值; 也可以添加自定義首部;

      示例:

      proxy_set_header X-Real-IP  $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                     原有請(qǐng)求報(bào)文中如果存在X-Forwared-For首部,則將remote_addr以逗號(hào)分隔補(bǔ)原有值后,否則則直接添加此首部;

         (3) 緩存相關(guān)的選項(xiàng)(緩存需要要先定義,調(diào)用)

      proxy_cache_path …

       path [levels=levels]  [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size]

      定義緩存,可用上下文為http; (fastcgi的緩存定義相似)

      proxy_cache  zone | off;

      調(diào)用緩存;可用上下文 為http,  server和location

      proxy_cache_key  string; 

      定義緩存鍵,默認(rèn)值為proxy_cache_key  $scheme$proxy_host$request_uri

      proxy_cache_valid  [code ...] time;

      對(duì)不同響應(yīng)碼的響應(yīng)設(shè)定其可緩存時(shí)長

      proxy_cache_use_stale  ...

      error | timeout |  invalid_header | updating | http_500 | http_502 | http_503 | http_504 |  http_403 | http_404 | off ...;

      超出響應(yīng)時(shí)長時(shí)候使用緩存條目來響應(yīng)(且緩存本身已經(jīng)超時(shí))

       補(bǔ)充說明:

           Nginx:請(qǐng)求首部設(shè)置(ngx_http_headers_module)

      add_header name  value [always];

      向響應(yīng)報(bào)文添加自定義首部,并為其賦值;

      expires [modified]  time;

      expires epoch |  max | off;

      允許或禁止向響應(yīng)報(bào)文的Cache-Control或Expires首部添加新值或修改其值;

         實(shí)例一:add_hader Via $server_addr;    記錄反向代理服務(wù)器地址

         實(shí)例二:日志追蹤代理記錄IP

      第一步:后端主機(jī)定義日志記錄格式

      Logformat 自定義日志格式,一般自定義變量均為X開頭,i表示取其值:添加 Logformat   "%{X-Real-IP}I … …"

      第二步:在方向代理主機(jī):修改http首部,記錄代理轉(zhuǎn)發(fā)主機(jī)的IP地址(慣用自定義變量X-Real-IPX-Forwarded-For)

      proxy_cacahe_path/var/cache/nginx_proxy/  levels=1:2key_zone=pcache:10m  max_size=1g;

      server {

      listen 80;

      server_name www.;

      root /data/www;

      add_hader  Via $server_addr; 

      proxy_set_header  X-Real-IP $remote_addr;

      location  / {

      proxy_pass  http://172.16.200.1;

      proxy_cache  pcache;

      proxy_cache_key  $request_uri;

      proxy_cache_vaild  200 302 10m;

      proxy_cache_vaild  404 2m;

      }

      }

      原有請(qǐng)求報(bào)文中如果存在X-Forwarded_For首部,則將remte_addr以逗號(hào)分割補(bǔ)在原有值之后,否則則直接添加此首部

       proxy_set_header   X-Real_IP $remote_addr;

       proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

          (4) 連接相關(guān)的選項(xiàng)

                     當(dāng)客戶端請(qǐng)求,而后端服務(wù)器過于繁忙會(huì)返回給客戶端502(BadGateway)服務(wù)器端錯(cuò)誤,在例如此類情況下,肯能需要調(diào)整服務(wù)器端關(guān)于連接時(shí)長相關(guān)的選項(xiàng)。

       proxy_connect_timeout  #;

      定義與后端服務(wù)器建立連接的超時(shí)時(shí)長;默認(rèn)為60s,不建議超出75s;

       proxy_send_timeout #;

      把請(qǐng)求發(fā)送給后端服務(wù)器的超時(shí)時(shí)長(定義兩次請(qǐng)求報(bào)文之間時(shí)間間隔);默認(rèn)為60s;

       proxy_read_timeout #;

      等待后端服務(wù)器發(fā)送響應(yīng)報(bào)文的超時(shí)時(shí)長;可以稍微長點(diǎn)

       

       

      二、Nginx:負(fù)載均衡配置(ngx_http_upstream_module)

       1.Nginx實(shí)現(xiàn)七層負(fù)載均衡

               Nginx實(shí)現(xiàn)反向代理的時(shí)候可以在后端使用多臺(tái)主機(jī)提供響應(yīng),且可以在多臺(tái)主機(jī)之間實(shí)現(xiàn)負(fù)載均衡效果。軟件形式的工作在應(yīng)用層(七層)的負(fù)載均衡器。

              ngx_http_upstream_module用于將多個(gè)服務(wù)器定義成服務(wù)器組,而由proxy_pass、fastcgi_passuwsgi_passscgi_passmemcached_pass指令進(jìn)行引用調(diào)度;

       

        2.常用指令

          (1) upstream NAME  { ... }

                      定義一個(gè)后端服務(wù)器組NAME為組名稱;僅能用于http上下文 ;

          (2) server ADDRESS  [PARAMETERS];

      在upstream中定義一個(gè)服務(wù)器及其相關(guān)參數(shù);僅能用于upstream上下文;

           常用參數(shù)(PARAMETERS):

      weight=#

      定義服務(wù)器權(quán)重,默認(rèn)為1

      max_fails=#

      最大失敗連接嘗試次數(shù),失敗連接超時(shí)時(shí)長由fail_timeout參數(shù)指定

      fail_timeout=#

      等待目標(biāo)服務(wù)器發(fā)送響應(yīng)的時(shí)長

      backup

      備用服務(wù)器,所有主服務(wù)器均故障時(shí)才啟用此主機(jī)

      down

      手動(dòng)標(biāo)記其不再處理任何用戶請(qǐng)求

          實(shí)例:

      第一步:在http上下文中定義upstream服務(wù)器組

      upstream websrvs {

      server 172.16.200.1 weight=2 max_fails=2 fail_timeout=6s;

      server 172.16.200.2  weight=1 max_fails=2fail_timeout=6s;

      }                                

      第二步:在反向代理http中(proxy_pass,fastcgi_pass, ...)進(jìn)行調(diào)用;

      server {

      listen 80;

      server_name  www.;

      root /data/www;

      location  / {

      proxy_pass http://websrvs/;

      }

      }

          (3) ip_hash;

       源地址hash,把來自同一個(gè)ip地址的請(qǐng)求始終發(fā)往同一個(gè)backendserver,除非此backend server不可用;

          (4) least_conn;

      最少連接;當(dāng)各server權(quán)重不同時(shí),即為加權(quán)最少連接;

          (5) match NAME  { ... }

      對(duì)backendserver做健康狀態(tài)檢測時(shí),定義其結(jié)果判斷機(jī)制;只能用于http上下文;

           常用的參數(shù):

      status  code[   code ...]:

      期望的響應(yīng)狀態(tài)碼;

      header  HEADER[operator  value]

      期望存在響應(yīng)首部,也可對(duì)期望的響應(yīng)首部的值基于比較操作符和值進(jìn)行比較;

      body

      期望響應(yīng)報(bào)文的主體部分應(yīng)該有的內(nèi)容;

          (6) health_check   [PARAMETERS];

      健康狀態(tài)檢測機(jī)制;只能用于location上下文;

            常用參數(shù):

      interval=#

      檢測的頻率,默認(rèn)為5秒;

      fails=#

      判定服務(wù)器不可用的失敗檢測次數(shù);默認(rèn)為1次;

      passes=#

      判定服務(wù)器可用的失敗檢測次數(shù);默認(rèn)為1次;

      uri=uri

      做健康狀態(tài)檢測測試的目標(biāo)uri;默認(rèn)為/;

      match=NAME

      健康狀態(tài)檢測的結(jié)果評(píng)估調(diào)用此處指定的match配置塊;

          (7) hash key [consistent];

      指明基于hash方式進(jìn)行調(diào)度時(shí),其hashkey;

      hash  $remote_addr相當(dāng)于ip_hash;

      常用的hash key:

          1) $cookie_name:

                             將一個(gè)用戶的請(qǐng)求始終發(fā)往同一個(gè)backendserver,能實(shí)現(xiàn)會(huì)話綁定的功能;此處的name為cookie某些參數(shù)的名稱,此處常用的有cookie_username;

          2) $request_uri:

                  將對(duì)同一個(gè)uri的請(qǐng)求始終發(fā)往同一個(gè)backend server,后端為cache server時(shí)特別有用;

      補(bǔ)充說明:session會(huì)話保持方式

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多