龙空技术网

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

云渺书斋 1980

前言:

如今看官们对“nginx 121”大概比较关切,你们都需要剖析一些“nginx 121”的相关资讯。那么小编在网摘上网罗了一些有关“nginx 121””的相关内容,希望我们能喜欢,各位老铁们快快来了解一下吧!

简述

本文主要介绍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缓存内容可以的进行增删管理

配置示例

图 1 配置示例

参数说明

图 2 参数说明

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 ;proxy_redirect off;proxy_set_header Host $host;}

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

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

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

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

(云渺书斋)

标签: #nginx 121 #nginxlocationor #nginx负载均衡找不到server #nginx集群upstream