nginx系列之五 負載均衡

2022-08-03 12:18:10 字數 4557 閱讀 3458

nginx系列之一:nginx入門

nginx系列之二:配置檔案解讀

nginx系列之三:日誌配置

nginx系列之四:web伺服器

nginx系列之五: 負載均衡

nginx系列之六:cache服務

nginx系列之七:限流配置

nginx系列之八:使用upsync模組實現負載均衡

使用nginx做負載均衡的兩大模組:

nginx 的負載均衡功能依賴於 ngx_http_upstream_module模組,所支援的**方式有 proxy_pass(一般用於反向**),fastcgi_pass(一般用於和動態程式互動),memcached_pass,proxy_next_upstream,fastcgi_next_pass,memcached_next_pass 。

upstream 模組應該放於http{}標籤內。

模組寫法:

upstream backend
例項一:

upstream dynamic
語法解釋:

server ip 排程狀態
server指令指定後端伺服器ip位址和埠,同時還可以設定每個後端伺服器在負載均衡排程中的狀態。

例:如果max_fails是5,他就檢測5次,如果五次都是502.那麼,他就會根據fail_timeout 的值,等待10秒,再去檢測。

server 如果接網域名稱,需要內網有dns伺服器,或者在負載均衡器的hosts檔案做網域名稱解析。server後面還可以直接接ip或ip加埠。

upstream backend
通過該指令配置了每個worker程序與上游伺服器可快取的空閒連線的最大數量。

當超出這個數量時,最近最少使用的連線將被關閉。keepalive指令不限制worker程序與上游伺服器的總連線。

location /
連線池配置建議

空閒連線池太小,連線不夠用,需要不斷建連線。

空閒連線池太大,空閒連線太多,還沒使用就超時。

建議只對小報文開啟長連線。

location作用:基於乙個指令設定uri。

syntax: location [ = | ~ | ~* | ^~ ] uri 

location @name

default: —

context: server, location

匹配是有優先順序的,不是按照nginx的配置檔案進行。

官方的例子:

location = / 

location /

location /documents/

location ^~ /images/

location ~* \.(gif|jpg|jpeg)$

結論:

location / 

location = /

location /documents/

location ^~ /images/

location ~* \.(gif|jpg|jpeg)$

測試結果(重點看):

[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" 

402[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" index.html

401[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" documents/document.html

403[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" images/1.gif

404[root@lb01 conf]# curl -i -s -o /dev/null -w "%\n" dddd/1.gif

500

結果總結:

匹配的優先順序,=>^~(匹配固定字串,忽略正則)>完全相等>~*>>/

工作中盡量將』='放在前面

proxy_pass 指令屬於ngx_http_proxy_module 模組,此模組可以將請求**到另一台伺服器。

寫法:

proxy_pass http://localhost:8000/uri/;
例項一:

upstream blog_real_servers 

server

}

配置如下:

'"$http_user_agent" "$http_x_forwarded_for"';rs_apache節點的httpd.conf配置

logformat "\"%i\" %l %u %t \"%r\" %>s %b \"%i\" \"%i\"" combined修改日誌記錄

apache

logformat "\"%i\" %l %u %t \"%r\" %>s %b" common

nginx提供了health_check語句來提供負載(upstream)時的鍵康檢查機制(注意:此語句需要設定在location上下文中)。

支援的引數有:

乙個簡單的設定如下,將使用預設值:

location /
對就應用,我們可以專門定義乙個api用於健康檢查:/api/health_check,並只返回http狀態碼為200。並設定兩次檢查之間的間隔值為1秒。這樣,health_check語句的配置如下:

health_check uri="/api/health_check" interval;
匹配match的方法

}match 例子舉例

if ($request_method !~ ^(get|head|post)$ )最終實現:

/static/的url都去訪問10.0.0.9。

/dynamic/的url都去訪問10.0.0.10。

這些靜態檔案去訪問10.0.0.9。

/upload/的url都去訪問10.0.0.10。

}nginx-proxy_pass官網

nginx系列之五 負載均衡

使用nginx做負載均衡的兩大模組 nginx 的負載均衡功能依賴於 ngx http upstream module模組,所支援的 方式有 proxy pass 一般用於反向 fastcgi pass 一般用於和動態程式互動 memcached pass,proxy next upstream,f...

Nginx系列(十三 nginx負載均衡)

負載均衡 upstream webserver 反向 server web伺服器 server location php 1.輪詢 預設 upstream webserver2.weight upstream webserver3.ip hash 解決session共享問題 upstream web...

Nginx 五 nginx 配置 負載均衡

瀏覽器位址列輸入位址 負載均衡效果,平均 8080 和 8081 埠中 準備兩台 tomcat 伺服器,一台 8080,一台 8081 找到 nginx 配置檔案進行如下 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器 down 掉,能自動剔除 upstream myserverwei...