nginx负载均衡

一、原理:

nginx可以实现负载均衡。客户端请求nginx服务器,nginx服务器代理请求后端web服务器组。nginx请求服务器组时,会根据某种规则(如ip轮询)实现服务器组的均衡访问。

从层次上来看,如果客户端是第一层,nginx是第二层,后端服务器组是第三层。那么对于客户端来说,其是不知道后边的两层的,客户端只需要访问nginx即可得到响应。

二、nginx.conf配置

notes:

1、upstream属性:

upstream 后端服务器组名{

server 服务器一IP:PORT;

server 服务器二IP:PORT;

}

upstream属性定义了后端服务器组。后端服务器组名可以任意。

upstream属性除了可以配置后端服务器组各服务器的ip:port外,还可以配置分发请求的策略:

1)、分别给各服务器设置权重weight,值越高,访问几率越大;

2)、给服务器组设置ip_hash;属性,nginx会根据客户端的ip来分发请求,每一个客户端(ip相同)会访问固定的后端服务器。

3)、其他。

2、server属性:

listen和server_name属性定义了nginx的监听端口和监听域名。只有当客户端访问这一域名时,nginx才会处理请求。

此属性是客户端关心的。

注意,该域名是访问nginx的域名,而不是访问web服务的域名。域名访问可以通过配置hosts文件或者搭建DNS服务器实现。


location属性:location属性后边紧跟的“/”是对访问路径的匹配策略,暂不做具体介绍。

重要的是内部的proxy_pass属性,该属性值设定了要访问的后端服务器组名,

格式为http://后端服务器组名(该后端服务器组名要与上边upstream中的后端服务器名一致)。

此属性是客户端不关心的。

三、配置过程中遇到的困惑:

第一次使用nginx,遇到一些问题。一开始想不通,想开了就很简单。

我要搭建的项目是内网项目,都是通过内网IP:PORT/项目路径的格式访问的,如http://192.168.30.111:8080/shopping

/com_shop/index.jsp。一开始想的是通过修改nginx的配置文件来实现由nginx直接定向到该地址,但是如上nginx的配

置文件中只在upstream中配置了后端服务器的IP和端口号,在proxy_pass指向前边的upstream。而没有对项目路径的设定。

其实问题换种角度思考就可以解决了。nginx实现不了(我暂时没有实现)直接定位,可以由访问后端服务器IP:PORT

时展示的HTML或者jsp实现重定向。

例如对于tomcat启动的服务,访问IP:PORT时会定位到tomcat欢迎界面,只需要在这个界面实现重新定位即可。

另外一种方式,将要访问的界面设置为tomcat的默认访问界面,实现方式为修改server.xml中的<Context>的path

属性。详见《tomcat部署服务的几种方式》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值