upstream
定義服務(wù)器組,服務(wù)器可以監(jiān)聽不通的端口,也可以同時(shí)監(jiān)聽TCP和UNIX-domain套接字。
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 backup;
}
server
語法:server address [parameters];
parameters列表
-
weight=number
服務(wù)器的權(quán)重值,默認(rèn)是1;
-
max_conns=number
設(shè)置允許的最大活動(dòng)連接數(shù)。默認(rèn)是0,表示不限制。(設(shè)置
keepalive
時(shí),如果有多個(gè)worker共享內(nèi)存,則連接數(shù)可能會(huì)超過設(shè)置的值) -
max_fails=number
設(shè)置在
fail_timeout
參數(shù)設(shè)置的時(shí)間段內(nèi)允許的失敗最大嘗試次數(shù),默認(rèn)是1,設(shè)置0表示失敗不會(huì)嘗試。 -
fail_timeout=time
fail_timeout
的值包含兩層意思:1.在這個(gè)時(shí)間段內(nèi)服務(wù)器通信失敗次數(shù)決定服務(wù)狀態(tài)是否為不可用;2.服務(wù)器被視為不可用狀態(tài)的時(shí)間段。默認(rèn)是10秒。
-
backup
標(biāo)記服務(wù)器是備用服務(wù)器,只有在其他服務(wù)器都不可用的情況下,才會(huì)請求該服務(wù)器。(在哈希、IP哈希、隨機(jī)三種負(fù)載均衡模式下不可用)
-
down
標(biāo)記服務(wù)器永久不可用狀態(tài)。
在商用版本還增加的參數(shù)
-
resolve
監(jiān)控服務(wù)器IP地址和域名的對(duì)應(yīng)關(guān)系,可以自動(dòng)重載
upstream
的配置,不需要重啟nginx,服務(wù)器組必須共享內(nèi)存。需要在
http
或者upstream
塊中設(shè)置resolver
指令后,resolve
參數(shù)才能有效 -
route=string
設(shè)置服務(wù)器路由名稱
-
service=name
起用DNS SRV記錄并設(shè)置服務(wù)名稱(1.9.13版本開始增加)。需要指定
resolve
參數(shù)和不帶端口的主機(jī)名才能使用。如果服務(wù)器名稱中不包含點(diǎn)(
.
),則構(gòu)造符合RFC規(guī)范的名稱,將TCP協(xié)議添加到服務(wù)前綴中,例如要查找_http._tcp.backend.example.com的SRV記錄,則必須配置:server backend.example.com service=http resolve;
如果服務(wù)名中包含一個(gè)或多個(gè)點(diǎn)(
.
),會(huì)通過將服務(wù)名作為前綴與服務(wù)器名拼接在一起構(gòu)造名稱,例如要查找_http._tcp.backend.example.com和server1.backend.example.com的SRV記錄,則需要配置:server backend.example.com service=_http._tcp resolve; server example.com service=server1.backend resolve;
最高優(yōu)先級(jí)的SRV記錄(具有相同最低優(yōu)先值的記錄)被解析為主服務(wù)器,其它的服務(wù)器被解析為備用服務(wù)器,如果服務(wù)器指定了
backup
參數(shù),則將高優(yōu)先級(jí)SRV記錄解析為備用服務(wù)器,其它SRV記錄將被忽略。 -
slow_start=time
當(dāng)服務(wù)器從不可用狀態(tài)恢復(fù)過來時(shí),通過
slow_start
設(shè)置的值決定將服務(wù)器權(quán)重從0逐漸恢復(fù)到正常設(shè)置值的時(shí)間。(在哈希、IP哈希、隨機(jī)三種負(fù)載均衡模式下不可用) -
drain
將服務(wù)器設(shè)置為“draining"模式,這種模式下,只有綁定到服務(wù)器的請求才會(huì)被代理到該服務(wù)器上(1.13.6版本其實(shí)起用)。
如果服務(wù)組中只有一臺(tái)服務(wù)器,server指令的max_fails
,fail_timeout
, slow_start
參數(shù)都是無效的,nginx不會(huì)認(rèn)為服務(wù)器不可用。
ngx_http_upstream_module
的自帶參數(shù)
-
$upstream_addr
保存upstream服務(wù)器的IP地址和端口或者UNIX域名套接字;
-
$upstream_bytes_received
從服務(wù)器接收到的字節(jié)數(shù)(從1.11.4版本開始起用);
-
$upstream_bytes_sent
發(fā)送到服務(wù)器的字節(jié)數(shù)(從1.15.8版本開始起用);
-
$upstream_cache_status
保存訪問響應(yīng)緩存的狀態(tài)(從0.8.3版本開始起用),緩存狀態(tài)可能是:“
MISS
”, “BYPASS
”, “EXPIRED
”, “STALE
”, “UPDATING
”, “REVALIDATED
”, 或者“HIT
”; -
$upstream_connect_time
保存于服務(wù)器完成連接話費(fèi)的時(shí)間(從1.9.1版本開始起用),這個(gè)時(shí)間會(huì)保存幾秒鐘內(nèi)以毫秒計(jì)量。在SLL連接的情況下,包含握手話費(fèi)的時(shí)間;
-
$upstream_cookie_
name由上游服務(wù)器在“ Set-Cookie”響應(yīng)標(biāo)頭字段中發(fā)送的具有指定名稱的cookie(從1.7.1版本開始起用),僅保存來自最后一個(gè)服務(wù)器響應(yīng)的cookie;
-
$upstream_header_time
保存從服務(wù)器接收響應(yīng)頭的時(shí)間(從1.7.0版本開始起用),這個(gè)時(shí)間會(huì)保存幾秒鐘內(nèi)以毫秒計(jì)量;
-
$upstream_http_
name保存服務(wù)器響應(yīng)頭字段。例如可以通過
http_”為前綴的變量的規(guī)則相同。僅保存來自最后一個(gè)服務(wù)器的響應(yīng)頭字段;
-
$upstream_queue_time
保存請求在upstream隊(duì)列中花費(fèi)的時(shí)間(從1.13.9版本開始起用),這個(gè)時(shí)間會(huì)保存幾秒鐘內(nèi)以毫秒計(jì)量;
-
$upstream_response_length
保存從服務(wù)器獲得的響應(yīng)的字節(jié)長度(從0.7.27版本開始起用);
-
$upstream_response_time
保存從服務(wù)器接收響應(yīng)花費(fèi)的時(shí)間,這個(gè)時(shí)間會(huì)保存幾秒鐘內(nèi)以毫秒計(jì)量;
-
$upstream_status
保存從服務(wù)器獲得響應(yīng)的狀態(tài)碼,如果無法選擇服務(wù)器,則設(shè)置為502(Bad Gateway);
-
$upstream_trailer_
name保存從服務(wù)器獲得的響應(yīng)末尾的字段(從1.13.10版本開始起用)。
·upstream
指令塊中還有很多其它參數(shù),如zone
、keepalive
等請參考官網(wǎng)。
其他文章列表
spring web service系列1
spring web service系列2
spring web service系列3
maven配置文件settings.xml詳解
Nginx轉(zhuǎn)發(fā)請求過程解析
Nginx中的負(fù)載均衡算法
Nginx中虛擬服務(wù)器server指令配置說明
Nginx中proxy_pass/proxy_redirect/proxy_set_header配置說明
Nginx中ngx_http_core_module相關(guān)指令配置說明
Java自帶JVM監(jiān)控工具jstat使用詳細(xì)說明
Java自帶JVM監(jiān)控工具jps使用詳細(xì)說明
Java自帶故障分析工具jmap工具使用說明
Java自帶故障分析工具jhat工具使用說明