nginx

                                               nginx

nginx是个比较大的命题了,似乎写这么一篇文章不是几句科普就能圆回来的。

首先,引发这么一些思考,nginx是什么?---反向代理服务器?路由网关???,作用是什么?---负载均衡?入口网关?,负载均衡算法呢?

没错,以上都是自卖自夸的内容,这一篇文章,统统告诉你们。

科普nginx

nginx是一个高性能的反向代理服务器,具体的架构我们可以看如下的模型:

分布式架构图

如果没有lvs,那么nginx将会是用户请求接触到的第一个服务,所以他和tomcat类似,是一个轻量级的web服务器,此web服务器又能处理反向代理,所以又称为反向代理服务器(且听我讲解什么是反向代理,否则这是一句废话)。

在知道反向代理之前,我们可以了解一下他的对应概念--正向代理。在平时我们访问谷歌的时候,我们通常需要连接一个vpn,我们通过vpn就能访问到谷歌服务器,这中间我们不需要知道vpn的地址,直接输入谷歌的域名,vpn相当于做了一个跳板,这就是正向代理。

正向代理是客户端知道服务器地址,代理服务器做转发,而反向代理则是代理服务器屏蔽掉真实访问的地址,将请求转发给其他服务器,客户端需要知道的是代理服务器的地址:

而nginx就是这么一个反向代理服务器,他的安装在这我就不多做介绍了,网上一搜一大把,继续快马加鞭了解他的作用吧。

根据nginx配置文件了解他的作用

nginx安装后有一个nginx.conf文件,首先映入眼帘的第一行是:

nginx.conf

这是什么呢?中文意义:工人线程:1。

没错,nginx是一个master-worker的一个工作方式,他默认是有一个工人线程,也有一个master线程,可以通过修改上述的配置修改工人线程数。master线程的主要作用是管理worker线程,读取配置文件,而worker线程的主要作用是用于处理请求,如此在实现热部署时,nginx会让老的worker继续处理请求,并生成新的worker按照新的配置文件处理新的请求,等待老的worker处理完毕,再kill掉。

nginx可以通过配置选择监听的端口号,然后为不同类型的请求设置转发内容:

nginx.conf

由上可见,作为一个代理服务器,nginx可以做如下的事情:

1、拦截静态资源的请求,这样,动态的请求可以转发给目标服务器,静态资源可以放在nginx服务器上;

2、nginx可以做一个ip控制,类似于黑名单,拦截指定的ip;

3、接下来要细细说说的负载均衡,策略;

nginx的负载均衡策略

上一段我们可以看到,我们配置了一个负载均衡集群,这就是我们研究的重点,因为核心的业务逻辑处理肯定都是要转发到目标tomcat上的。

默认情况下,nginx是依次轮询每一个服务器;但是如上图,如果我们配置了weight权重,就会按照比率轮询;还有一种iphash配置方法,根据ip的hash值来分配转发服务器,在某种程度上可以解决session在分布式系统的问题;fair方法,根据后台服务器的响应时间来选择;urlhash(暂时不解)。

nginx引申出来的问题

nginx大致介绍就如上,但是我们可以继续引申几个问题,nginx作为入口网关,肯定不允许单点,如何实现高可用呢?

keepalived实现高可用的nginx

如上图,当我们搭配多台nginx服务器,我们可以使用keepalived实现nginx的高可用,请求会访问keepalived,再访问nginx,如此,keepalived的ip就是虚拟IP了,简称VIP。

那么我们再次衍生出一个新的问题,我们之前通过iphash实现负载均衡并完成session的一致,在此情况就作废了,因为请求nginx的永远都是keepalived的虚拟ip,这时,我们就需要通过redis或者memcached来缓存session完成session的共享了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值