Nginx 负载均衡是什么以及该如何配置_nginx

来源:脚本之家  责任编辑:小易  

什么是负载均衡

负载均衡主要通过专门的硬件设备或者通过软件算法实现。通过硬件设备实现的负载均衡效果好、效率高、性能稳定,但是成本比较高。通过软件实现的负载均衡主要依赖于均衡算法的选择和程序的健壮性。均衡算法也是多种多样的,常见的有两大类:即静态负载均衡算法和动态负载均衡算法。静态算法实现比较简单,在一般网络环境下也能达到比较好的效果,主要有一般轮询算法、基于比率的加权轮询算法以及基于优先级的加权轮询算法等。动态负载均衡算法在较为复杂的网络环境中适应性更强,效果更好,主要有基于任务量的最少连接优先算法、基于性能的最快响应优先算法、预测算法及动态性能分配算法等。

网络负载均衡技术的大致原理是利用一定的分配策略将网络负载平衡地分摊到网络集群的各个操作单元上,使得单个重负载任务能够分担到多个单元上并行处理,或者使得大量并发访问或数据 流量分担到多个单元上分别处理,从而减少用户的等待响应时间。

Nginx服务器负载均衡配置

Nginx服务器实现了静态的基于优先级的加权轮询算法,主要使用的配置是proxy_pass指令和upstream指令,这些内容实际上很容易理解,关键点在于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.htm;
    location / {
        proxy_pass http://backend;
        prox_set_header Host $host;
    }
    ...
} 

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

    与“配置实例一”相比,在该实例片段中,backend服务器组中的服务器被赋予了不同的优先级别,weight变量的值就是轮询策略中的“权值”。其中,192.168.1.2:80的级别最高,优先接收和处理客户端请求;192.168.1.4:80的级别最低,是接收和处理客户端请求最少的服务器,192.168.1.3:80将介于以上两者之间。所有访问www.myweb.name的请求都会在backend服务器组中实现加权负载均衡。实例代码如下:

...
 
upstream backend                    #配置后端服务器组
{
    server 192.168.1.2:80 weight=5;
    server 192.168.1.3:80 weight=2;
    server 192.168.1.4:80;          #默认weight=1
}
server
{
    listen 80;
    server_name www.myweb.name;
    index index.html index.htm;
    location / {
        proxy_pass http://backend;
        prox_set_header Host $host;
    }
    ...
}

配置实例三:对特定资源实现负载均衡

在该实例片段中,我们设置了两组被代理的服务器组,名为“videobackend”的一组用于对请求video资源的客户端请求进行负载均衡,另一组用于对请求filed资源的客户端请求进行负载均衡。所有对“http://www.mywebname/video/* ”的请求都会在videobackend服务器组中获得均衡效果,所有对“http://www.mywebname/file/* ”的请求都会在filebackend服务器组中获得均衡效果。该实例中展示的是实现一般负载均衡的配置,对于加权负载均衡的配置可以参考“配置实例二”。

    在location /file/ {......}块中,我们将客户端的真实信息分别填充到了请求头中的“Host”、“X-Real-IP”和“X-Forwareded-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.htm;
    location /video/ {
        proxy_pass http://videobackend; #使用后端服务器组1
        prox_set_header Host $host;
        ...
    }
    location /file/ {
        proxy_pass http://filebackend;  #使用后端服务器组2
                                        #保留客户端的真实信息
        prox_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”,则服务器server1接收并转向homebackend服务器组进行负载均衡处理;如果客户端请求域名为“bbs.myweb.name”,则由服务器server2接收bbsbackend服务器级进行负载均衡处理。这样就实现了对不同域名的负载均衡。

需要注意两组后端服务器组中有一台服务器server 192.168.1.4:80是公用的。在该服务器上需要部署两个域名下的所有资源才能保证客户端请求不会出现问题。实例代码如下:

...
upstream bbsbackend                    #配置后端服务器组1
{
    server 192.168.1.2:80 weight=2;
    server 192.168.1.3:80 weight=2;
    server 192.168.1.4:80;
}
upstream homebackend                    #配置后端服务器组2
{
    server 192.168.1.4:80;
    server 192.168.1.5:80;
    server 192.168.1.6:80;
}
                                        #开始配置server 1
server
{
    listen 80;
    server_name home.myweb.name;
    index index.html index.htm;
    location / {
        proxy_pass http://homebackend;
        prox_set_header Host $host;
        ...
    }
    ...
}
                                        #开始配置server 2
server
{
    listen 80;
    server_name bbs.myweb.name;
    index index.html index.htm;
    location / {
        proxy_pass http://bbsbackend;
        prox_set_header Host $host;
        ...
    }
    ...
}

配置实例五:实现带有URL重写的负载均衡

    首先,我们来看具体的源码,这是在实例一的基础上做的修改:

...
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.htm;
     
    location /file/ {
        rewrite ^(/file/.*)/media/(.*)\.*$) $1/mp3/$2.mp3 last;
    }
     
    location / {
        proxy_pass http://backend;
        prox_set_header Host $host;
    }
    ...
}

该实例片段与“配置一”相比,增加了对URI包含“/file/”的URL重写功能。例如客户端请求的URL为“http://www.myweb.name/file/downlaod/media/1.mp3 ”时,该虚拟服务器首先使用location file/ {......}块转发到后端的backend服务器组中实现负载均衡。这样,就车轻而易举地实现了带有URL重写功能的负载均衡。在该配置方案中,一定要掌握清楚rewrite指令中last标记和break标记的区别,才能达到预计的效果。

以上5个配置实例展示了Nginx服务器实现不同情况下负载均衡配置的基本方法。由于Nginx服务器的功能在结构上是增量式的,因此 ,我们可以在这些配置的基础上继续添加更多功能,比如Web缓存等功能,以及Gzip压缩技术、身份认证、权限管理等。同时在使用upstream指令配置服务器组时,可以充分发挥各个指令的功能,配置出满足需求、高效稳定、功能丰富的Nginx服务器。

以上就是Nginx 负载均衡是什么以及该如何配置的详细内容,更多关于Nginx 负载均衡的资料请关注真格学网其它相关文章!

您可能感兴趣的文章:Nginx/Httpd负载均衡tomcat配置教程nginx负载均衡配置,宕机自动切换方式WebApi部署多服务器配置Nginx负载均衡的教程Nginx配置参数中文说明详解(负载均衡与反向代理)Nginx正反向代理及负载均衡等功能实现配置代码实例Nginx负载均衡/SSL配置的实现Linux 系统 nginx 服务器安装及负载均衡配置详解Linux下Nginx负载均衡多个tomcat配置的方法步骤Nginx服务器负载均衡及ssl原理、生成ssl密钥对、Nginx配置ssl操作示例CentOS6.5环境安装nginx服务器及负载均衡配置操作详解Nginx负载均衡配置简单配置方法详解Linux系统配置nginx的负载均衡Nginx实现集群的负载均衡配置过程解析

  • 本文相关:
  • nginx安装lua-nginx-module模块的方法步骤
  • nginx 禁止ip访问 只允许域名访问
  • nginx日志按天生成和定期删除日志的方法
  • 详解nginx 虚拟主机配置的三种方式(基于ip)
  • 使用nginx做websockets代理教程
  • nginx与lua灰度发布的实现
  • forever+nginx部署node站点的方法示例
  • nginx服务器中配置geoip模块来拦截指定国家ip
  • linux下nginx+tomcat负载均衡配置方法
  • nginx代理输出缩放图片的方法
  • nginx配置前端,需要几台什么样的服务器。什么样的...
  • nginx负载均衡怎么访问数据库
  • windows版nginx怎样配置负载均衡
  • nginx 做负载均衡需要什么配置
  • nginx负载均衡配置必须要有服务器吗
  • linux下怎么修改nginx负载均衡配置
  • nginx反向代理和负载均衡在配置文件中怎么配置
  • web nginx 负载均衡的项目怎么处理
  • nginx 负载均衡 负责转发的那台服务器 配置是否要...
  • nginx做负载均衡,对cookie和session方面有没有什...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全星外虚拟主机华众虚拟主机linuxwin服务器ftp服务器dns服务器tomcat nginxzabbix云和虚拟化服务器其它首页服务器nginx/httpd负载均衡tomcat配置教程nginx负载均衡配置,宕机自动切换方式webapi部署多服务器配置nginx负载均衡的教程nginx配置参数中文说明详解(负载均衡与反向代理)nginx正反向代理及负载均衡等功能实现配置代码实例nginx负载均衡/ssl配置的实现linux 系统 nginx 服务器安装及负载均衡配置详解linux下nginx负载均衡多个tomcat配置的方法步骤nginx服务器负载均衡及ssl原理、生成ssl密钥对、nginx配置ssl操作示例centos6.5环境安装nginx服务器及负载均衡配置操作详解nginx负载均衡配置简单配置方法详解linux系统配置nginx的负载均衡nginx实现集群的负载均衡配置过程解析nginx安装lua-nginx-module模块的方法步骤nginx 禁止ip访问 只允许域名访问nginx日志按天生成和定期删除日志的方法详解nginx 虚拟主机配置的三种方式(基于ip)使用nginx做websockets代理教程nginx与lua灰度发布的实现forever+nginx部署node站点的方法示例nginx服务器中配置geoip模块来拦截指定国家iplinux下nginx+tomcat负载均衡配置方法nginx代理输出缩放图片的方法nginx提示:500 internal servernginx 多站点配置方法集合权限问题导致nginx 403 forbiddenginx fastcgi错误primary scripnginx服务器的反向代理proxy_pasnginx 403 forbidden的解决办法详解nginx服务器中配置超时时间的nginx伪静态配置和常用rewrite伪nginx下301重定向域名的方法小结windows下nginx+php5的安装与配置nginx实现404页面的方法小结nginx修改默认运行80端口的方法nginx屏蔽f5心跳日志、指定ip访问日志详解nginx服务器中配置sysguard模块预防高探究nginx中reload流程的原理真相nginx 504 gateway time-out错误解决方法在nginx服务器下配置startssl和ssl的教程nginx 配置反向代理使用 google fonts 字nginx带宽控制(限速模块使用)使用 nginx 部署静态页面的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved