Nginx Upstream 簡述
阿新 • • 發佈:2018-12-24
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 簡述