Nginx中的負載平衡方法

在下令狐發表於2020-12-08
  • 1.Round Robin: 對所有的請求進行輪詢傳送請求,預設的分配方式。
upstream ngcon {
   server www.baidu.com;
   server www.baidu2.com;
}
  • 2.Least Connections:以最少的活動連線數將請求傳送到伺服器,同樣要考慮伺服器權重。
 upstream ngcon {
       least_conn;
       server www.baidu.com;
       server www.baidu2.com; 
}
  • 3.IP Hash : 傳送請求的伺服器由客戶機IP地址決定。在這種情況下,使用IPv4地址的前三個位元組或整個IPv6地址來計算雜湊值。該方法保證來自相同地址的請求到達相同的伺服器,除非該伺服器不可用。
 upstream ngcon {
        ip_hash;
        server www.baidu.com;
        server www.baidu2.com;
 }

測試:

  • 找到nginx的配置檔案nginx.conf,該配置在nginx/conf/nginx.conf目錄下,新增如下配置:
upstream ngcon{
   server 127.0.0.1:8085;
   server 127.0.0.1:8086;
}
  • 然後在server新增/修改如下配置:
server {
        listen       80;
        server_name  127.0.0.1;


        location / {
            root   html;
            proxy_pass http://ngcon;
            proxy_connect_timeout 3s;
            proxy_read_timeout 5s;
            proxy_send_timeout 3s; 
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
  • 配置說明:
  • server: 虛擬主機的名稱,一個http中可以配置多個server;
  • listen:Nginx預設的埠;
  • server_name:Nginx服務的地址,可以使用域名,多個用空格分隔。
  • proxy_pass:代理路徑,一般配置upstream後面的名稱用於實現負載均衡,可以直接配置ip進行跳轉

啟動Nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

熱載入配置檔案

/usr/local/nginx/sbin/nginx -s reload

相關文章