JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Nginx负载均衡之upstream、server、location参数配置

wys521 2024-09-18 03:07:12 精选教程 55 ℃ 0 评论

简述

本文主要介绍Nginx负载均衡之upstream、server、location参数配置。

Nginx

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

常用功能

反向代理,代理对象为服务端做代理,使客户端不需要感知服务端的存在,只需要访问代理服务器便可获得想要的结果。实现限流、负载均衡、动静分离等。



负载均衡(Load Balance),是分布式系统中一个非常重要的概念。当访问的服务具有多个实例节点时,需要根据某种“均衡”的策略决定请求发往哪个节点,这个过程就是所谓的负载均衡。多在高并发情况下需要使用。其原理就是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。Nginx是一个轻量级、高性能、稳定性高、并发性好的HTTP和反向代理服务器。

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略主要通过第三方模块实现,种类比较丰富,常见的有url hash、fair等。

  • 轮询策略:将前端每个请求按顺序(时间顺序或者排列顺序)逐一分配到不同的后端节点上,对于出现问题的后端接口自动删除。Nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB....
  • upstream mysvr {

    server 127.0.0.1:7878;

    server 192.168.10.121:3333;

    }

  • 加权轮询策略:在基本的轮询策略上考虑各后端节点接收请求的权重,指定各后端节点被轮询到几率。根据配置的权重的大小而分发给不同服务器不同数量的请求。下面服务器的请求顺序为:ABBABBABBABBABB....
  • upstream mysvr {

    server 127.0.0.1:7878 weight=1;

    server 192.168.10.121:3333 weight=2;

    }

  • ip_hash:将前端的访问IP进行hash操作,然后根据hash结果将请求分配给不同的后端节点。通过Nginx的实现,每个前端访问IP会固定访问一个后端节点,可避免session共享的问题。
  • upstream mysvr {

    server 127.0.0.1:7878;

    server 192.168.10.121:3333;

    ip_hash;

    }

    • url hash:扩展策略中的url hash在形式上和IP hash相近,不同之处在于,IP hash策略是对前端访问IP进行了hash操作,而url hash策略是对前端请求的url进行hash操作。url hash策略优点在于,如果后端有缓存服务器,它能够提高缓存效率,同时解决了session的问题;但其缺点是,如果后端节点出现异常,它不能自动排除该节点。
    • fair:该模块将前端请求转发到一个最近负载最小的后台节点。Nginx通过后端节点对请求的响应时间来判断负载情况。响应时间短的节点负载相对就轻,得出判断结果后,Nginx就将前端请求转到到选中的负载最轻的节点。

    web缓存

    Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理

    配置示例

    参数说明

    upstream

    upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器。

    upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com fail_timeout=5s slow_start=30s;
    server backend3.example.com resolve;
    server backend4.example.com service=http resolve;
    server backup1.example.com backup;
    server backup2.example.com backup;
    }


    server

    server模块配置是http模块中的一个子模块,用来定义一个虚拟访问主机。

    server {
      listen 80;
      server_name localhost nginx_ip;
      root /nginx/www;
      index index.php index.html index.html;
      charset utf-8;
      access_log logs/access.log;
      error_log logs/error.log;
    }


    location

    location模块配置在路由访问信息配置中关联到反向代理、负载均衡等等各项功能。

    语法规则: location [=|~|~*|^~] /uri/ { … }


    多个location优先级:首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

    location / {
      root /nginx/www;
     index index.php index.html index.htm;
    }
    location ^~ /test {
    proxy_pass http://backend;
    proxy_redirect off;
    proxy_set_header Host $host;
    }

    location /:表示匹配访问根目录。

    root:用于指定访问根目录时,访问虚拟主机的web目录。

    index:在不指定访问具体资源时,默认展示的资源文件列表。


    ok,以上就是Nginx负载均衡之upstream、server、location参数配置,看完记得转发、点赞和收藏。如果有错误,欢迎批评指正,感谢。

    (云渺书斋)

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表