欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 使用nginx做負載均衡的模塊解讀

使用nginx做負載均衡的模塊解讀

熱門標簽:400電話辦理哪家好廠商 工廠位置地圖標注 鶴壁電銷外呼系統怎么安裝 企業400電話辦理哪正規 地圖標注需要現場嗎 重慶營銷外呼系統排名 網站上插入地圖標注內容 繽客網注冊時地圖標注出不來 地圖標注企業名稱侵權案件

使用nginx做負載均衡的兩大模塊:

  • upstream 定義負載節點池。
  • location 模塊 進行URL匹配。
  • proxy模塊 發送請求給upstream定義的節點池。

upstream模塊解讀

nginx 的負載均衡功能依賴于 ngx_http_upstream_module模塊,所支持的代理方式有 proxy_pass(一般用于反向代理),fastcgi_pass(一般用于和動態程序交互),memcached_pass,proxy_next_upstream,fastcgi_next_pass,memcached_next_pass 。

upstream 模塊應該放于http{}標簽內。

模塊寫法:

upstream backend {
  ip_hash; 
  server backend1.example.com    weight=5;
  server backend2.example.com:8080;
  server backup1.example.com:8080  backup;
  server backup2.example.com:8080  backup;
}

實例一:

upstream dynamic {
  zone upstream_dynamic 64k;

  server backend1.example.com   weight=5;
  server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
  server 192.0.2.1         max_fails=3;
  server backend3.example.com   resolve;

  server backup1.example.com:8080 backup;
  server backup2.example.com:8080 backup;
}

語法解釋:

nginx默認支持四種調度算法

  • 輪詢(rr),每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器故障,故障系統自動清除,使用戶訪問不受影響。
  • 輪詢權值(weight),weight值越大,分配到的訪問幾率越高,主要用于后端每個服務器性能不均的情況。
  • ip_hash,每個請求按訪問IP的hash結果分配,這樣來自同一個IP的固定訪問一個后端服務器,主要解決動態網站session共享的問題。
  • url_hash,按照訪問的URL的hash結果來分配請求,是每個URL定向到同一個后端服務器,可以進一步提高后端緩存服務器的效率,nginx本身不支持,如果想使用需要安裝nginx的hash軟件包。
  • fair,這個算法可以依據頁面大小和加載時間長短智能的進行負載均衡,也就是根據后端服務器的響應時間來分配請求,相應時間短的優先分配,默認不支持,如果想使用需要安裝upstream_fail模塊。
  • least_conn 最少鏈接數,那個機器連接數少就分發。

server模塊的寫法

server IP 調度狀態

server指令指定后端服務器IP地址和端口,同時還可以設定每個后端服務器在負載均衡調度中的狀態。

  • down 表示當前的server暫時不參與負載均衡。
  • backup 預留的備份服務器,當其他所有的非backup服務器出現故障或者忙的時候,才會請求backup機器,因為這臺集群的壓力最小。
  • max_fails 允許請求失敗的次數,默認是1,當超過最大次數時,返回proxy_next_upstream模塊定義的錯誤。0表示禁止失敗嘗試,企業場景:2-3.京東1次,藍汛10次,根據業務需求去配置。

fail_timeout,在經歷了max_fails次失敗后,暫停服務的時間。京東是3s,藍汛是3s,根據業務需求配置。常規業務2-3秒合理。
例:如果max_fails是5,他就檢測5次,如果五次都是502.那么,他就會根據fail_timeout 的值,等待10秒,再去檢測。

server 如果接域名,需要內網有DNS服務器,或者在負載均衡器的hosts文件做域名解析。server后面還可以直接接IP或IP加端口。

長連接 keepalive

upstream backend {
  server backend2.example.com:8080;
  server backup1.example.com:8080  backup;
  keepalive 100;
}

通過該指令配置了每個worker進程與上游服務器可緩存的空閑連接的最大數量。
當超出這個數量時,最近最少使用的連接將被關閉。keepalive指令不限制worker進程與上游服務器的總連接。

location / {
  # 支持keep-alive
  proxy_http_version 1.1;
  proxy_set_header Connection "";
  proxy_pass http://backup;
}
  • 如果是http/1.0 需要配置發送"Connection: Keep-Alive" 請求頭。
  • 上游服務器不要忘記開啟長連接支持。

連接池配置建議

  • 總長連接數是"空閑連接池"+"釋放連接池"的長連接總數。
  • 首先,長連接配置不會限制worker進程可以打開的總連接數(超了的作為短連接)。另外連接池一定要根據場景合理進行設置。

空閑連接池太小,連接不夠用,需要不斷建連接。
空閑連接池太大,空閑連接太多,還沒使用就超時。
建議只對小報文開啟長連接。

location 模塊解讀

location作用:基于一個指令設置URI。

基本語法:

Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
  • = 精確匹配,如果找到匹配=號的內容,立即停止搜索,并立即處理請求(優先級最高)
  • ~ 區分大小寫
  • ~* 不區分大小寫
  • ^~ 只匹配字符串,不匹配正則表達式
  • @ 指定一個命名的location,一般用于內部重定義請求,location @name {…}

匹配是有優先級的,不是按照nginx的配置文件進行。

官方的例子:

location = / {
  [ configuration A ]
}
location / {
  [ configuration B ]
}
location /documents/ {
  [ configuration C ]
}
location ^~ /images/ {
  [ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
  [ configuration E ]
}

結論:

  • / 匹配A。
  • /index.html 匹配B
  • /documents/document.html 匹配C
  • /images/1.gif 匹配D
  • /documents/1.jpg 匹配的是E。

測試用的例子:

location / {
      return 401;
    }
    location = / {
      return 402;
    }
    location /documents/ {
      return 403;
    }
    location ^~ /images/ {
      return 404;
    }
    location ~* \.(gif|jpg|jpeg)$ {
      return 500;
    }

測試結果(重點看):

[root@lb01 conf]# curl -I -s -o /dev/null -w "%{http_code}\n" http://10.0.0.7/
402
[root@lb01 conf]# curl -I -s -o /dev/null -w "%{http_code}\n" http://10.0.0.7/index.html
401
[root@lb01 conf]# curl -I -s -o /dev/null -w "%{http_code}\n" http://10.0.0.7/documents/document.html 
403
[root@lb01 conf]# curl -I -s -o /dev/null -w "%{http_code}\n" http://10.0.0.7/images/1.gif
404
[root@lb01 conf]# curl -I -s -o /dev/null -w "%{http_code}\n" http://10.0.0.7/dddd/1.gif 
500

結果總結:

匹配的優先順序,=>^~(匹配固定字符串,忽略正則)>完全相等>~*>空>/ 。

工作中盡量將'='放在前面

proxy_pass 模塊解讀

proxy_pass 指令屬于ngx_http_proxy_module 模塊,此模塊可以將請求轉發到另一臺服務器。

寫法:

proxy_pass http://localhost:8000/uri/;

實例一:

  upstream blog_real_servers {
     server 10.0.0.9:80 weight=5;
     server 10.0.0.10:80 weight=10;
     server 10.0.0.19:82 weight=15;
  }
  server {
    listen    80;
    server_name blog.etiantian.org;
    location / {
    proxy_pass http://blog_real_servers;
    proxy_set_header host $host;
    }
  }
  • proxy_set_header:當后端Web服務器上也配置有多個虛擬主機時,需要用該Header來區分反向代理哪個主機名,proxy_set_header host $host;。
  • proxy_set_header X-Forwarded-For :如果后端Web服務器上的程序需要獲取用戶IP,從該Header頭獲取。proxy_set_header X-Forwarded-For $remote_addr;

配置后端服務器接收前端真實IP

配置如下:

  log_format commonlog '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';

rs_apache節點的httpd.conf配置

LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{U
ser-Agent}i\"" combined修改日志記錄
apache
LogFormat "\"%{X-Forwarded-For}i\" %l %u %t \"%r\" %>s %b" common

proxy_pass相關的優化參數

  • client_max_body_size 10m; 允許客戶端請求的最大的單個文件字節數。
  • client_body_buffer_size 128k; 緩沖區代理緩沖用戶端請求的最大字節數 可以理解為先保存到本地再傳給用戶。
  • proxy_connect_timeout 600; 跟后端服務器連接的超時時間_發起握手等候響應超時時間。
  • proxy_read_timeout 600; 連接成功后_等候后端服務器響應時間_其實已經進入后端的排隊之中等候處理。
  • proxy_send_timeout 600; 后端服務器回傳數據時間,就是在規定時間之內后端服務器必須傳完所有的數據。
  • proxy_buffer_size 8k; 代理請求緩存區,這個緩存區間會保存用戶的頭信息以供Nginx進行規則處理,一般只要設置能保存下頭信息即可。
  • proxy_buffers 4 32k; 同上 告訴Nginx保存單個頁面使用的空間大小,假設網頁大小平均在32k以下的話。
  • proxy_busy_buffers_size 64k; 如果系統很忙的時候可以申請更大的proxy_buffers 官方推薦(proxy_buffers*2)。
  • proxy_max_temp_file_size 1024m; 當 proxy_buffers 放不下后端服務器的響應內容時,會將一部分保存到硬盤的臨時文件中,這個值用來設置最大臨時文件大小,默認1024M,它與 proxy_cache 沒有關系。大于這個值,將從upstream服務器傳回。設置為0禁用。
  • proxy_temp_file_write_size 64k; proxy緩存臨時文件的大小 proxy_temp_path(可以在編譯的時候)指定寫到哪那個目錄。

健康檢查

Nginx提供了health_check語句來提供負載(upstream)時的鍵康檢查機制(注意:此語句需要設置在location上下文中)。

支持的參數有:

  • interval=time:設置兩次健康檢查之間的間隔值,默認為5秒
  • fails=number:設置將服務器視為不健康的連續檢查次數,默認為1次
  • passes=number:設置一個服務器被視為健康的連續檢查次數,默認為1次
  • uri=uri:定義健康檢查的請求URI,默認為”/“
  • match=name:指定匹配配置塊的名字,用記測試響應是否通過健康檢測。默認為測試返回狀態碼為2xx和3xx

一個簡單的設置如下,將使用默認值:

location / {
  proxy_pass http://backend;
  health_check;
}

對就應用,我們可以專門定義一個API用于健康檢查:/api/health_check,并只返回HTTP狀態碼為200。并設置兩次檢查之間的間隔值為1秒。這樣,health_check語句的配置如下:

health_check uri="/api/health_check" interval;

匹配match的方法

http {
  server {
  ...
    location / {
      proxy_pass http://backend;
      health_check match=welcome;
    }
  }

  match welcome {
    status 200;
    header Content-Type = text/html;
    body ~ "Welcome to nginx!";
  }
}

match 例子舉例

  • status 200;: status 等于 200
  • status ! 500;: status 不是 500
  • status 200 204;: status 是 200 或 204
  • status ! 301 302;: status 不是301或302。
  • status 200-399;: status 在 200 到 399之間。
  • status ! 400-599;: status 不在 400 到 599之間。
  • status 301-303 307;: status 是 301, 302, 303, 或 307。
  • header Content-Type = text/html;: “Content-Type” 得值是 text/html。
  • header Content-Type != text/html;: “Content-Type” 不是 text/html。
  • header Connection ~ close;: “Connection” 包含 close。
  • header Connection !~ close;: “Connection” 不包含 close。
  • header Host;: 請求頭包含 “Host”。
  • header ! X-Accel-Redirect;: 請求頭不包含 “X-Accel-Redirect”。
  • body ~ "Welcome to nginx!";: body 包含 “Welcome to nginx!”。
  • body !~ "Welcome to nginx!";: body 不包含 “Welcome to nginx!”。

一個完整的nginx實例

[root@lb01 conf]# cat nginx.conf
worker_processes 1;
events {
  worker_connections 1024;
}
http {
  include    mime.types;
  default_type application/octet-stream;
  sendfile    on;
  keepalive_timeout 65;
  #blog lb by oldboy at 201303
  upstream blog_real_servers {
  server  10.0.0.9:80 weight=1 max_fails=1 fail_timeout=10s;
  server  10.0.0.10:80 weight=1 max_fails=2 fail_timeout=20s;

  }
  server {
    listen    80;
    server_name blog.etiantian.org;
    location / {
    proxy_pass http://blog_real_servers;
    include proxy.conf;
    }
  }
}
[root@lb01 conf]# cat proxy.conf 
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_connect_timeout 90;    
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;

擴展補充

只允許使用GET,HEAD,POST方法去請求

## Only allow these request methods ##
   if ($request_method !~ ^(GET|HEAD|POST)$ ) {
     return 444;
   }

實戰

根據URI及location實現動靜分離。

最終實現:

  • /static/的URL都去訪問10.0.0.9。
  • /dynamic/的URL都去訪問10.0.0.10。
  • 圖片這些靜態文件去訪問10.0.0.9。
  • /upload/的URL都去訪問10.0.0.10。
[root@lb01 conf]# cat nginx.conf
worker_processes 1;
events {
  worker_connections 1024;
}
http {
  include    mime.types;
  default_type application/octet-stream;
  sendfile    on;
  keepalive_timeout 65;
  #blog lb by oldboy at 201303

  upstream static_pools {
   server 10.0.0.9:80;
  }
  upstream dynamic_pools {
   server 10.0.0.10:80;
  }
   upstream upload_pools {
   server 10.0.0.9:80;
  }

  server {
    listen    80;
    server_name blog.biglittleant.cn;
    
    location / {
    proxy_pass http://static_pools;
    include proxy.conf;
    }

    location /static/ { 
    proxy_pass http://static_pools;
    include proxy.conf;
    }
    
    location ~* \.(gif|jpg|jpeg)$ {
     proxy_pass http://static_pools;
     include proxy.conf;
    }

    location /dynamic/ { 
    proxy_pass http://dynamic_pools;
    include proxy.conf;
    }
    location /upload/ {
    proxy_pass http://upload_pools;
    include proxy.conf;
    }
  }
}

實現蘋果手機和安卓手機訪問不同的地址

server {
    listen    80;
    server_name blog.etiantian.org;
    location / {
    if ($http_user_agent ~* "android")
     {
      proxy_pass http://android_pools;
     }
    if ($http_user_agent ~* "iphone")
     {
      proxy_pass http://iphone_pools;
      }
    proxy_pass http://pc_pools;
    include extra/proxy.conf;
    }
    access_log off;
   }

參考文檔

nginx-proxy_pass官網

到此這篇關于使用nginx做負載均衡的模塊解讀的文章就介紹到這了,更多相關nginx 負載均衡內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:鹽城 東莞 日照 克拉瑪依 渭南 96 棗莊 常州

巨人網絡通訊聲明:本文標題《使用nginx做負載均衡的模塊解讀》,本文關鍵詞  使用,nginx,做,負載,均衡,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用nginx做負載均衡的模塊解讀》相關的同類信息!
  • 本頁收集關于使用nginx做負載均衡的模塊解讀的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产成人免费视频一区| 女人被狂躁c到高潮| 一级片久久久久| 日韩精品资源二区在线| 亚洲激情图片一区| 91免费观看视频在线| 久久成人小视频| 国产亚洲欧洲一区高清在线观看| 日韩中文欧美在线| 男男做爰猛烈叫床爽爽小说| 在线国产亚洲欧美| 伊人色综合久久天天| www.欧美色图| 色先锋久久av资源部| 中文字幕二三区不卡| 国产精品88888| 国产又粗又长又黄的视频| 日韩欧美不卡一区| 麻豆精品视频在线观看| 久久精品99国产精品日本| 88久久精品无码一区二区毛片| 懂色av懂色av粉嫩av| 国产色产综合产在线视频| 国产最新精品精品你懂的| 公侵犯人妻一区二区三区| 欧美大白屁股肥臀xxxxxx| 麻豆视频观看网址久久| 亚洲 欧美 日韩在线| 7777精品伊人久久久大香线蕉经典版下载 | 日韩精品综合一本久道在线视频| 日日夜夜精品视频免费| 国产伦精品一区二区三区妓女 | 精品国产91洋老外米糕| 免费在线观看一区二区三区| 波多野吉衣中文字幕| 亚洲成年人av| 91精品国产一区二区三区| 日韩综合小视频| 97伦伦午夜电影理伦片| 欧美r级在线观看| 久久99国产精品免费网站| 人妻熟人中文字幕一区二区| 国产午夜精品久久久久久久| 成人性视频网站| 色综合色综合色综合色综合色综合 | 国产精品一区二区亚洲| 日本一区二区不卡视频| hitomi一区二区三区精品| 欧美怡红院视频| 亚洲成年人网站在线观看| 亚洲精品成人无码熟妇在线| 精品久久五月天| 丁香一区二区三区| 欧洲国内综合视频| 日韩电影在线一区二区三区| 久久美女免费视频| 国产精品麻豆视频| 又色又爽又黄18网站| 精品国产免费一区二区三区四区 | 日本理论中文字幕| 亚洲欧美电影一区二区| 亚洲熟妇一区二区| 久久综合狠狠综合| 成人福利视频网站| 91精品国产综合久久精品麻豆 | 国产午夜精品理论片a级大结局| 99热这里都是精品| 日韩一区二区三| 国产91在线看| 欧美精品久久99久久在免费线| 久久99精品久久久久婷婷| 日韩a级片在线观看| 亚洲午夜精品久久久久久久久| www.av欧美| 亚洲特黄一级片| 精品成人av一区二区三区| 国产精品久久久久天堂| 国产麻豆xxxvideo实拍| 欧美激情一区二区三区在线| 催眠调教后宫乱淫校园| 久久久久久麻豆| 一本色道久久hezyo无码| 日韩久久久久久| 免费人成视频在线播放| www成人在线观看| 久久久久久无码精品人妻一区二区| 日韩三级电影网址| 99re亚洲国产精品| 欧美不卡一区二区三区| 亚洲午夜精品在线观看| 国产网站一区二区| 国产草草浮力影院| 亚洲欧美综合另类在线卡通| 天天躁日日躁aaaa视频| 一区二区三区中文免费| 羞羞在线观看视频| 日韩精品免费专区| 在线观看日产精品| 国产乱人伦精品一区二区在线观看| 欧美电影一区二区| aaa亚洲精品| 久久精品视频在线免费观看| japanese在线观看| 亚洲日本在线观看| 少妇的滋味中文字幕bd| 七七婷婷婷婷精品国产| 欧美色综合网站| 成人黄色av电影| 国产午夜精品美女毛片视频| 自拍视频一区二区| 亚洲一区二区三区激情| 色综合中文字幕| 一区二区理论电影在线观看| 欧美性受极品xxxx喷水| 亚洲成人在线免费| 一本在线高清不卡dvd| 国精产品一区一区三区mba桃花 | 狠狠色丁香婷婷综合| 日韩亚洲欧美成人一区| 91香蕉视频mp4| 国产精品灌醉下药二区| 国产精品免费无码| 久久99久久久久| 日韩午夜激情av| 日韩aaaaa| 亚洲一区在线电影| 欧美色爱综合网| 99久久777色| 日本视频在线免费| 日本午夜一区二区| 91精品国产91久久久久久一区二区| 97超碰免费在线观看| 一区二区三区小说| 艳母动漫在线看| 99久久精品99国产精品| 国产精品乱码一区二区三区软件| 日本视频在线免费| 国产精品一区一区| 国产亚洲女人久久久久毛片| 公肉吊粗大爽色翁浪妇视频| 激情综合网天天干| 久久欧美一区二区| 欧美性猛交xxxx乱| 国模冰冰炮一区二区| 中文字幕精品三区| 亚洲一级二级片| 不卡的av电影在线观看| 亚洲天堂av一区| 欧美日韩一区二区三区在线| 亚洲av无一区二区三区久久| 亚洲已满18点击进入久久| 欧美精品丝袜中出| 天天躁日日躁狠狠躁免费麻豆| 日韩精品高清不卡| 精品三级在线观看| 老司机福利在线观看| 国产二区国产一区在线观看 | 黄色片视频免费观看| 成人性生交大合| bt7086福利一区国产| 综合色天天鬼久久鬼色| 在线观看视频91| 国产日韩视频一区| 无码av免费一区二区三区试看 | 综合色天天鬼久久鬼色| 69精品无码成人久久久久久| 国产亚洲一区二区三区| 久久久久久久久久久久| 蜜桃视频一区二区三区在线观看| 欧美一区二区在线不卡| 欧美成人午夜精品免费| 国产九色精品成人porny | 亚洲欧美激情在线| 欧美视频一区在线| 国产三级视频网站| 国产乱码精品一区二区三区av| 中文字幕精品一区| 欧美日韩精品综合在线| av女人的天堂| gogo大胆日本视频一区| 香蕉乱码成人久久天堂爱免费| 这里只有精品视频在线观看| 刘亦菲国产毛片bd| 不卡高清视频专区| 国产真实乱对白精彩久久| 国产精品国产精品国产专区不片 | 超碰手机在线观看| 91在线小视频| 337p日本欧洲亚洲大胆张筱雨| 熟女人妻在线视频| 黄色录像a级片| 亚洲视频在线一区观看| 国产精品国产高清国产| 欧美色涩在线第一页| 一级女性全黄久久生活片免费| 欧美www视频| 日韩免费av一区| 欧美日韩一区二区三区四区五区六区| 亚洲最大色网站| 337p粉嫩大胆噜噜噜噜噜91av|