Nginx权重分配,从而实现分流
在 Nginx 中,权重分配是通过upstream, 模块来实现的。upstream 模块就像是一个资源分配的调度中心,它负责将接收到的请求按照预先设定的规则分配到不同的后端服务器。打个比方,upstream 模块就像是一个餐厅的领班,顾客(请求)进来后,领班根据顾客的特点(请求域名)和餐厅的座位情况(后端服务器的负载和权重),安排顾客到合适的座位(后端服务器)。权重的数值越大,表示分配到该后端服务器的请求比例就越高。例如,如果有两个后端服务器,一个权重为 1,另一个权重为 2,那么大约三分之二的请求会被分配到权重为 2 的服务器上,而只有三分之一的请求会被分配到权重为 1 的服务器上。
示例如下:
第一步:配置 upstream 块
首先,我们需要在 Nginx 的配置文件中定义 upstream 块,来指定后端服务器和它们的权重。以下是一个简单的示例:
upstream domain1 {
server 192.168.1.10:8080 weight=1;
server 192.168.1.11:8080 weight=2;
}
upstream domain2 {
server 192.168.1.12:8080 weight=3;
server 192.168.1.13:8080 weight=1;
}
第二步:配置服务器块
接下来,在 server 块中,根据请求的域名来选择对应的 upstream 块。例如:
server {
listen 80;
server_name domain1.com;
location / {
proxy_pass http://domain1;
}
}
server {
listen 80;
server_name domain2.com;
location / {
proxy_pass http://domain2;
}
}
整个配置如下:
upstream primary {
server 192.168.1.10:8080 weight=1;
server 192.168.1.11:8080 weight=1;
}
upstream highschool {
server 192.168.1.12:8080 weight=2;
server 192.168.1.13:8080 weight=2;
}
server {
listen 80;
server_name www.primary.edu;
location / {
proxy_pass http://primary;
}
}
server {
listen 80;
server_name www.highschool.edu;
location / {
proxy_pass http://highschool;
}
}