<返回更多

nginx服务器负载均衡配置

2021-07-27    前端技术进阶
加入收藏

均衡算法也是多种多样,常见的两大类:即静态负载均衡法和动态负载均衡法。静态算法也是比较简单,主要有有一般轮询算法,基于比例的加权轮询算法,以及基于优先级的轮询算法。动态算法在较为复杂的网络环境中适应性更强,效果更好,主要有基于任务量最少连接优先级算法,基于性能的最快响应算法,预测算法及动态性能分配算法等

配置实例一:对所有请求实现一般轮询规则的负载均衡

在以下实例片段中,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;
        ...
    }
}
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>