濮阳杆衣贸易有限公司

主頁 > 知識庫 > 詳解nginx upstream 配置和作用

詳解nginx upstream 配置和作用

熱門標簽:天津外呼系統(tǒng)運營商 貴陽語音電銷機器人 電銷機器人怎么錄音 漯河電銷外呼系統(tǒng)價格 咸陽穩(wěn)定外呼系統(tǒng)公司 貴港市機器人外呼系統(tǒng)團隊 ec外呼系統(tǒng)怎么樣 蕪湖呼叫中心外呼系統(tǒng)哪家強 征服者快捷酒店地圖標注

配置例子

upstream backend {
  server backend1.example.com    weight=5;
  server backend2.example.com:8080;
  server unix:/tmp/backend3;

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

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

指令

語法: upstream name { ... }
默認值:
上下文: http

定義一組服務(wù)器。 這些服務(wù)器可以監(jiān)聽不同的端口。 而且,監(jiān)聽在TCP和UNIX域套接字的服務(wù)器可以混用。

例子:

upstream backend {
  server backend1.example.com weight=5;
  server 127.0.0.1:8080    max_fails=3 fail_timeout=30s;
  server unix:/tmp/backend3;
}

默認情況下,nginx按加權(quán)輪轉(zhuǎn)的方式將請求分發(fā)到各服務(wù)器。 在上面的例子中,每7個請求會通過以下方式分發(fā): 5個請求分到backend1.example.com, 一個請求分到第二個服務(wù)器,一個請求分到第三個服務(wù)器。 與服務(wù)器通信的時候,如果出現(xiàn)錯誤,請求會被傳給下一個服務(wù)器,直到所有可用的服務(wù)器都被嘗試過。 如果所有服務(wù)器都返回失敗,客戶端將會得到最后通信的那個服務(wù)器的(失?。╉憫?yīng)結(jié)果。

語法: server address [parameters];
默認值:
上下文: upstream

定義服務(wù)器的地址address和其他參數(shù)parameters。 地址可以是域名或者IP地址,端口是可選的,或者是指定“unix:”前綴的UNIX域套接字的路徑。如果沒有指定端口,就使用80端口。 如果一個域名解析到多個IP,本質(zhì)上是定義了多個server。

你可以定義下面的參數(shù):weight=number設(shè)定服務(wù)器的權(quán)重,默認是1。max_fails=number設(shè)定Nginx與服務(wù)器通信的嘗試失敗的次數(shù)。在fail_timeout參數(shù)定義的時間段內(nèi),如果失敗的次數(shù)達到此值,Nginx就認為服務(wù)器不可用。在下一個fail_timeout時間段,服務(wù)器不會再被嘗試。 失敗的嘗試次數(shù)默認是1。設(shè)為0就會停止統(tǒng)計嘗試次數(shù),認為服務(wù)器是一直可用的。 你可以通過指令proxy_next_upstream、 fastcgi_next_upstream和memcached_next_upstream來配置什么是失敗的嘗試。 默認配置時,http_404狀態(tài)不被認為是失敗的嘗試。fail_timeout=time設(shè)定

  • 統(tǒng)計失敗嘗試次數(shù)的時間段。在這段時間中,服務(wù)器失敗次數(shù)達到指定的嘗試次數(shù),服務(wù)器就被認為不可用。
  • 服務(wù)器被認為不可用的時間段。

默認情況下,該超時時間是10秒。backup標記為備用服務(wù)器。當(dāng)主服務(wù)器不可用以后,請求會被傳給這些服務(wù)器。down標記服務(wù)器永久不可用,可以跟ip_hash指令一起使用。

Example:

upstream backend {
  server backend1.example.com   weight=5;
  server 127.0.0.1:8080      max_fails=3 fail_timeout=30s;
  server unix:/tmp/backend3;

  server backup1.example.com:8080 backup;
}

語法: ip_hash;
默認值:
上下文: upstream

指定服務(wù)器組的負載均衡方法,請求基于客戶端的IP地址在服務(wù)器間進行分發(fā)。 IPv4地址的前三個字節(jié)或者IPv6的整個地址,會被用來作為一個散列key。 這種方法可以確保從同一個客戶端過來的請求,會被傳給同一臺服務(wù)器。除了當(dāng)服務(wù)器被認為不可用的時候,這些客戶端的請求會被傳給其他服務(wù)器,而且很有可能也是同一臺服務(wù)器。

從1.3.2和1.2.2版本開始支持IPv6地址。

如果其中一個服務(wù)器想暫時移除,應(yīng)該加上down參數(shù)。這樣可以保留當(dāng)前客戶端IP地址散列分布。

例子:

upstream backend {
  ip_hash;

  server backend1.example.com;
  server backend2.example.com;
  server backend3.example.com down;
  server backend4.example.com;
}

從1.3.1和1.2.2版本開始,ip_hash的負載均衡方法才支持設(shè)置服務(wù)器權(quán)重值。

語法: keepalive connections;
默認值:
上下文: upstream

這個指令出現(xiàn)在版本 1.1.4.

激活對上游服務(wù)器的連接進行緩存。

connections參數(shù)設(shè)置每個worker進程與后端服務(wù)器保持連接的最大數(shù)量。這些保持的連接會被放入緩存。 如果連接數(shù)大于這個值時,最久未使用的連接會被關(guān)閉。

需要注意的是,keepalive指令不會限制Nginx進程與上游服務(wù)器的連接總數(shù)。 新的連接總會按需被創(chuàng)建。 connections參數(shù)應(yīng)該稍微設(shè)低一點,以便上游服務(wù)器也能處理額外新進來的連接。

配置memcached上游服務(wù)器連接keepalive的例子:

upstream memcached_backend {
  server 127.0.0.1:11211;
  server 10.0.0.2:11211;

  keepalive 32;
}

server {
  ...

  location /memcached/ {
    set $memcached_key $uri;
    memcached_pass memcached_backend;
  }

}

對于HTTP代理,proxy_http_version指令應(yīng)該設(shè)置為“1.1”,同時“Connection”頭的值也應(yīng)被清空。

upstream http_backend {
  server 127.0.0.1:8080;

  keepalive 16;
}

server {
  ...

  location /http/ {
    proxy_pass http://http_backend;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    ...
  }
}

另外一種選擇是,HTTP/1.0協(xié)議的持久連接也可以通過發(fā)送“Connection: Keep-Alive”頭來實現(xiàn)。不過不建議這樣用。

對于FastCGI的服務(wù)器,需要設(shè)置 fastcgi_keep_conn 指令來讓連接keepalive工作:

upstream fastcgi_backend {
  server 127.0.0.1:9000;

  keepalive 8;
}

server {
  ...

  location /fastcgi/ {
    fastcgi_pass fastcgi_backend;
    fastcgi_keep_conn on;
    ...
  }
}

當(dāng)使用的負載均衡方法不是默認的輪轉(zhuǎn)法時,必須在keepalive 指令之前配置。

針對SCGI和uwsgi協(xié)議,還沒有實現(xiàn)其keepalive連接的打算。

語法: least_conn;
默認值:
上下文: upstream

這個指令出現(xiàn)在版本 1.3.1 和 1.2.2.

指定服務(wù)器組的負載均衡方法,根據(jù)其權(quán)重值,將請求發(fā)送到活躍連接數(shù)最少的那臺服務(wù)器。 如果這樣的服務(wù)器有多臺,那就采取有權(quán)重的輪轉(zhuǎn)法進行嘗試。

嵌入的變量

ngx_http_upstream_module模塊支持以下嵌入變量:

$upstream_addr保存服務(wù)器的IP地址和端口或者是UNIX域套接字的路徑。 在請求處理過程中,如果有多臺服務(wù)器被嘗試了,它們的地址會被拼接起來,以逗號隔開,比如: “192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock”。 如果在服務(wù)器之間通過“X-Accel-Redirect”頭或者error_page有內(nèi)部跳轉(zhuǎn),那么這些服務(wù)器組之間會以冒號隔開,比如:“192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80”。$upstream_response_time以毫秒的精度保留服務(wù)器的響應(yīng)時間,(輸出)單位是秒。 出現(xiàn)多個響應(yīng)時,也是以逗號和冒號隔開。$upstream_status保存服務(wù)器的響應(yīng)代碼。 出現(xiàn)多個響應(yīng)時,也是以逗號和冒號隔開。$upstream_http_...保存服務(wù)器的響應(yīng)頭的值。比如“Server”響應(yīng)頭的值可以通過$upstream_http_server變量來獲取。 需要注意的是只有最后一個響應(yīng)的頭會被保留下來。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標簽:濰坊 淮北 怒江 香港 西藏 攀枝花 西寧 東營

巨人網(wǎng)絡(luò)通訊聲明:本文標題《詳解nginx upstream 配置和作用》,本文關(guān)鍵詞  詳解,nginx,upstream,配置,和,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解nginx upstream 配置和作用》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解nginx upstream 配置和作用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    东光县| 台北市| 鄢陵县| 苍溪县| 万州区| 延寿县| 黎平县| 崇信县| 德安县| 通城县| 虹口区| 上杭县| 湾仔区| 镇安县| 连城县| 黄大仙区| 西青区| 凤冈县| 杂多县| 景洪市| 贵溪市| 荔浦县| 锡林郭勒盟| 永兴县| 龙井市| 平武县| 长兴县| 肥西县| 竹北市| 梅河口市| 余江县| 什邡市| 金乡县| 滨州市| 荥阳市| 保山市| 白山市| 安顺市| 阳山县| 绥阳县| 广德县|