均衡算法也是多種多樣,常見的兩大類:即靜態負載均衡法和動態負載均衡法。靜態算法也是比較簡單,主要有有一般輪詢算法,基于比例的加權輪詢算法,以及基于優先級的輪詢算法。動態算法在較為復雜的網絡環境中適應性更強,效果更好,主要有基于任務量最少連接優先級算法,基于性能的最快響應算法,預測算法及動態性能分配算法等
配置實例一:對所有請求實現一般輪詢規則的負載均衡
在以下實例片段中,backend服務器組中所有的優先級全部配置為默認的weight = 1,這樣它們會按照一般輪詢策略依次接收請求任務。該配置是一個最簡單的實現Nginx服務器負載均衡的配置,所有訪問www.myweb.name的請求都會在backend服務器組中實現負載均衡
upstream backend #配置后端服務器組
{
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80; #默認weight = 1
}
server {
listen 80;
server_name www.myweb.name;
index index.html index.html
location / {
proxy_pass http://backend
proxy_set_header Host $host;
...
}
}
配置實例二:對所有請求實現加權輪詢規則的負載均衡
與實例一相比,在該實例片段中,backend服務器組中的服務器被賦予了不同的優先級別,weight變量的值就是輪詢策略中的“權值”
upstream backend #配置后端服務器組
{
server 192.168.1.2:80 weight=5;
server 192.168.1.3:80 weight=3;
server 192.168.1.4:80; #默認weight = 1
}
server {
listen 80;
server_name www.myweb.name;
index index.html index.html
location / {
proxy_pass http://backend
proxy_set_header Host $host;
...
}
}
配置實例三:對特定資源實現負載均衡現負載均衡
在該實例片段中,設置了兩組被代理的服務器組,videobackend服務器組用于對請求video資源的客戶端請求進行負載均衡,另外一組filebackend資源的客戶端請求進行負載均衡,通過對location塊url的不同配置
在location /file/中,我們將客戶端真實的信息分別填充到了請求頭中的Host、X-Real-IP 和 X-Forward-For頭域,這樣后端服務器組收到的請求就保留了客戶端的真實信息而不是nginx服務器的信息
...
upstream videobackend #配置后端服務器組1
{
server 192.168.1.2:80 ;
server 192.168.1.3:80 ;
server 192.168.1.4:80 ;
}
upstream filebackend #配置后端服務器組2
{
server 192.168.1.5:80 ;
server 192.168.1.6:80 ;
server 192.168.1.7:80 ;
}
server {
listen 80;
server_name www.myweb.name;
index index.html index.html
location /video/ {
proxy_pass http://videobackend;
proxy_set_header Host $host;
...
}
location /file/ {
proxy_pass http://filebackend;
proxy_set_header Host $host;
# 保留客戶端的真實信息
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}
}
配置實例四:對不同域名實現負載均衡
客戶端請求域名為home.myweb.name轉發到homebackend服務器組 客戶端請求域名為bbs.myweb.name轉發到bbsbackend服務器組
...
upstream bbsbackend #配置后端服務器組1
{
server 192.168.1.2:80 ;
server 192.168.1.3:80 ;
server 192.168.1.4:80 ;
}
upstream homebackend #配置后端服務器組2
{
server 192.168.1.5:80 ;
server 192.168.1.6:80 ;
server 192.168.1.7:80 ;
}
server {
listen 80;
server_name www.home.myweb.name;
index index.html index.html
location /video/ {
proxy_pass http://homebackend;
proxy_set_header Host $host;
...
}
}
server {
listen 81;
server_name www.bbs.myweb.name;
index index.html index.html
location /{
proxy_pass http://bbsbackend;
proxy_set_header Host $host;
...
}
}
配置實例五:實現帶有url重寫的負載均衡
如客戶端的請求為
http://www.myweb.name/file/download/media/1.mp3,該虛擬服務器首先使用location塊將url重寫為
http://www.myweb.name/file/download/mp3/1.mp3 ,然后新的url再由location塊轉發到后端backend服務器中實現負載均衡
...
upstream backend #配置后端服務器組
{
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80; #默認weight = 1
}
server {
listen 80;
server_name www.myweb.name;
index index.html index.html
location / {
rewirte ^(/file/.*)/media/(.*).*$ $1/mp3/$2.mp3 last;
}
location / {
proxy_pass http://backend
proxy_set_header Host $host;
...
}
}






