nginx負載均衡
使用客戶端的真實ip進行hash
-
在經過多層代理後,ip_hash獲取到的是伺服器的ip,客戶端真實ip需要從$http_x_forwarded_for獲取;
-
在http模組下增加map模組,返回客戶端ip,在upstream模組中使用map的第二個引數進行hash;
http { #引數對映(根據第一個屬性的值,從下方列表中匹配值,返回到第二個屬性) map $http_x_forwarded_for $client_real_ip { # 獲取第一個ip ~^(?P<first_addr>[0-9\.]+),?.*$ $first_addr; # 如果http_x_forwarded_for為空則使用remote_addr伺服器ip "" $remote_addr; } # 負載均衡服務池 upstream practiceBoot { hash $client_real_ip; server 192.168.1.100:8080; # 後端伺服器1 server 192.168.1.101:8080; # 後端伺服器2 } server { listen 80; # 使用上游伺服器組進行負載均衡 location /practice{ proxy_pass http://practiceBoot/practice;# 將請求代理到上游伺服器組 # 可以新增其他代理相關的配置,如代理超時、緩衝區大小等 } } }
輪詢
-
輪詢是預設負載均衡模式,每個請求按照順序分配給後端伺服器,保證每個伺服器平等負載。
http { # 定義上游伺服器組 upstream practiceBoot { server 192.168.1.100:8080; # 後端伺服器1 server 192.168.1.101:8080; # 後端伺服器2 # 可以繼續新增更多的後端伺服器 } server { listen 80; # 使用上游伺服器組進行負載均衡 location /practice { proxy_pass http://practiceBoot/practice; # 將請求代理到上游伺服器組 # 可以新增其他代理相關的配置,如代理超時、緩衝區大小等 } } }
IP Hash
-
透過對客戶端IP地址計算出一個Hash值,再將該值與後端伺服器列表進行匹配,實現同一客戶端訪問同一伺服器的功能。
http { # 定義上游伺服器組 upstream practiceBoot { ip_hash; server 192.168.1.100:8080; # 後端伺服器1 server 192.168.1.101:8080; # 後端伺服器2 # 可以繼續新增更多的後端伺服器 } server { listen 80; # 使用上游伺服器組進行負載均衡 location /practice { proxy_pass http://practiceBoot/practice; # 將請求代理到上游伺服器組 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 其他代理設定... } } }
最少連線
-
將請求傳送到當前連線數最少的伺服器,以實現最均衡的負載均衡。
http { # 定義上游伺服器組 upstream practiceBoot { least_conn; # 使用最少連線策略 server 192.168.1.100:8080; # 後端伺服器1 server 192.168.1.101:8080; # 後端伺服器2 # 可以繼續新增更多的後端伺服器 } server { listen 80; # 使用上游伺服器組進行負載均衡 location /practice { proxy_pass http://practiceBoot/practice; # 將請求代理到上游伺服器組 # 可以新增其他代理相關的配置,如代理超時、緩衝區大小等 } } }
基於請求URI的負載均衡
-
可以透過反向代理設定規則,根據請求URI的不同將請求分配到相應的伺服器上。
http { # 定義上游伺服器組 upstream practiceBoot { hash $uri; server 192.168.1.100:8080; # 後端伺服器1 server 192.168.1.101:8080; # 後端伺服器2 # 可以繼續新增更多的後端伺服器 } server { listen 80; # 使用上游伺服器組進行負載均衡 location /practice { proxy_pass http://practiceBoot/practice; # 將請求代理到上游伺服器組 # 可以新增其他代理相關的配置,如代理超時、緩衝區大小等 } } }