1. 程式人生 > >Nginx Upstream 簡述

Nginx Upstream 簡述

ash set 固定 最大 參考 root 建立 nor error

Nginx Upstream 簡述
  • Nginx 負載均衡簡單配置
# 在http節點下,加入upstream節點

upstream test {
    server 192.168.1.2:8090;
    server 192.168.1.3:8090;
}
# 將server節點下的location節點中的proxy_pass設置為 http:// upstream 名稱

location / {
    root html;
    index index.html index.htm;
    proxy_pass http://test;
}

Upstream 分配策略

  • 默認(輪詢): 交替訪問兩臺服務器
  • weight(權重):指定輪詢的機率,weight和訪問次數成正比,用於後端服務器配置性能不均的情況如下例中1.3的訪問機率是1.2的兩倍:

    upstream test{
    server 192.168.1.2 weigth=2;
    server 192.168.1.3 weigth=4;
    }
  • ip_hash:每一個請求按訪問Ip的hash結果分配,使每一個訪客的訪問固定到同一臺後端服務器解決了session問題
upstream test{
    ip_hash:
    server 192.168.1.2;
    server 192.168.1.3;
}
  • fair(第三方):需要編譯模塊到nginx中,按後端有務器的響應時間來分配請求,響應時間短的優先分配。
upstream test {
    fair;
    server 192.168.1.2;
    server 192.168.1.3;
}
  • url_hash(第三方):按訪問的url的hash結果來分配請求,使每一個url定向到同一個後端服務器,後端服務器為緩存時比較有效,在upstream中加入hash語句,server語句中不能寫入weight等其它參數。
upstream test{
    server 192.168.1.2;
    server 192.168.1.3;
    hash $request_uri;
    hash_method crc32;
}

upstream還能為每一個設備設置狀態值 ,這些值的含義如下:
down 當前的server不參與負載
weigth默認為1,weight的值越大,負載就越大
max_fails同意請求失敗的次數,默認1,當超過最大次數時,返回proxy_next+upstream模塊定義的錯語
fail_timeout:max_fails次失敗後,暫停訪問
backup其他全部非backup服務器down或者忙時才會請求backup機器,所以它的壓力最輕

proxy_pass部分參數(僅供參考)

 include       mime.types;   #文件擴展名與文件類型映射表
    default_type  application/octet-stream; #默認文件類型,默認為text/plain
    #access_log off; #取消服務日誌    
    log_format myFormat ‘ $remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for‘; #自定義格式
    access_log log/access.log myFormat;  #combined為日誌格式的默認值
    sendfile on;   #允許sendfile方式傳輸文件,默認為off,可以在http塊,server塊,location塊。
    sendfile_max_chunk 100k;  #每個進程每次調用傳輸數量不能大於設定的值,默認為0,即不設上限。
    keepalive_timeout 65;  #連接超時時間,默認為75s,可以在http,server,location塊。
    proxy_connect_timeout 1;   #nginx服務器與被代理的服務器建立連接的超時時間,默認60秒
    proxy_read_timeout 1; #nginx服務器想被代理服務器組發出read請求後,等待響應的超時間,默認為60秒。
    proxy_send_timeout 1; #nginx服務器想被代理服務器組發出write請求後,等待響應的超時間,默認為60秒。
    proxy_http_version 1.0 ; #Nginx服務器提供代理服務的http協議版本1.0,1.1,默認設置為1.0版本。
    #proxy_method get;    #支持客戶端的請求方法。post/get;
    proxy_ignore_client_abort on;  #客戶端斷網時,nginx服務器是否終端對被代理服務器的請求。默認為off。
    proxy_ignore_headers "Expires" "Set-Cookie";  #Nginx服務器不處理設置的http相應投中的頭域,這裏空格隔開可以設置多個。
    proxy_intercept_errors on;    #如果被代理服務器返回的狀態碼為400或者大於400,設置的error_page配置起作用。默認為off。
    proxy_headers_hash_max_size 1024; #存放http報文頭的哈希表容量上限,默認為512個字符。
    proxy_headers_hash_bucket_size 128; #nginx服務器申請存放http報文頭的哈希表容量大小。默認為64個字符。
    proxy_next_upstream timeout;  #反向代理upstream中設置的服務器組,出現故障時,被代理服務器返回的狀態值。error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off
    #proxy_ssl_session_reuse on; 默認為on,如果我們在錯誤日誌中發現“SSL3_GET_FINSHED:digest check failed”的情況時,可以將該指令設置為off。

Nginx Upstream 簡述