中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在nginx中配置upstream

發布時間:2021-05-25 17:16:02 來源:億速云 閱讀:489 作者:Leah 欄目:服務器

如何在nginx中配置upstream?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

配置例子

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

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

例子:

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按加權輪轉的方式將請求分發到各服務器。 在上面的例子中,每7個請求會通過以下方式分發: 5個請求分到backend1.example.com, 一個請求分到第二個服務器,一個請求分到第三個服務器。 與服務器通信的時候,如果出現錯誤,請求會被傳給下一個服務器,直到所有可用的服務器都被嘗試過。 如果所有服務器都返回失敗,客戶端將會得到最后通信的那個服務器的(失敗)響應結果。

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

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

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

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

  • 服務器被認為不可用的時間段。

默認情況下,該超時時間是10秒。backup標記為備用服務器。當主服務器不可用以后,請求會被傳給這些服務器。down標記服務器永久不可用,可以跟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

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

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

如果其中一個服務器想暫時移除,應該加上down參數。這樣可以保留當前客戶端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的負載均衡方法才支持設置服務器權重值。

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

這個指令出現在版本 1.1.4.

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

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

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

配置memcached上游服務器連接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指令應該設置為“1.1”,同時“Connection”頭的值也應被清空。

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協議的持久連接也可以通過發送“Connection: Keep-Alive”頭來實現。不過不建議這樣用。

對于FastCGI的服務器,需要設置 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;
    ...
  }
}

當使用的負載均衡方法不是默認的輪轉法時,必須在keepalive 指令之前配置。

針對SCGI和uwsgi協議,還沒有實現其keepalive連接的打算。

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

這個指令出現在版本 1.3.1 和 1.2.2.

指定服務器組的負載均衡方法,根據其權重值,將請求發送到活躍連接數最少的那臺服務器。 如果這樣的服務器有多臺,那就采取有權重的輪轉法進行嘗試。

嵌入的變量

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

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

關于如何在nginx中配置upstream問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

象山县| 武平县| 鹰潭市| 文登市| 保康县| 梁河县| 鄂伦春自治旗| 霍城县| 南木林县| 买车| 大埔区| 山东| 赤水市| 荥阳市| 合水县| 渑池县| 宁陕县| 宣化县| 宜春市| 平凉市| 海盐县| 遂昌县| 芦山县| 巴塘县| 南澳县| 元谋县| 宁明县| 泸西县| 长汀县| 通化县| 新竹县| 南华县| 博兴县| 清徐县| 舟曲县| 汝南县| 龙泉市| 定日县| 凉城县| 青海省| 广昌县|