nginx服务器负载均衡配置

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

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

在以下实例片段中,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-IPX-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;
        ...
    }
}

相关文章

nginx proxy_pass 头信息处理

简介 有些应用需要验证请求和响应的头部信息。而现在的架构基本都会在前端使用nginx进行转发。如果没有处理头部信息,就会导致信息丢失,无法通过验证,出现403等请求异常的情况。nginx指令proxy...

Nginx之进程间通信-共享内存篇

前面我们介绍了Nginx的多进程模型,多个worker进程间通信 主要是用共享内存来实现的。今天我们就来学习下Nginx的共享内存。那么进程该如何创建共享内存呢?如果按照使用我们的malloc来分配...

Linux 系统信息命令大全,极其详细!

在日常运维、排障、性能优化或系统审计中,我们常常需要了解 Linux 系统的详细信息,包括内核版本、硬件配置、内存、磁盘、网络状态、进程负载等。掌握这些信息命令,不仅能让你看清系统运行的“全貌”,更是...

Nginx之http模块是如何解析http请求的,6个步骤一目了然-02

解析http请求:在解析http请求之前,我们先来复习下http请求包含的各个部分及每个部分的协议格式。一个http请求一般由 请求行、请求头、请求体、响应行、响应头、响应体 这6个部分组成。我们就以...

Nginx熔断操作:一行代码搞定临时流量控制!

直接在目标接口的location块中添加if判断,通过注释/取消注释一行代码,即可轻松控制熔断状态!无需复杂指令,简单高效!快速配置示例快速实现熔断!示例:熔断/api/order接口server {...

Nginx实现认证登录

Nginx 是一个很强大的高性能Web和反向代理服务,本配置实现Nginx认证登录以免重要信息暴露在公网。ngx_http_auth_basic_module模块实现让访问者访问,只有输入正确的用户密...