Linux基础——Web(三)Nginx反向代理2

当负载均衡后方节点出现问题时,是没有错误提示的,而是不再把用户请求代理给坏的节点。当坏的修好后,过几秒会进行检测,会自动启用该节点。

1.

如果负载均衡池里的server加入backup参数,nginx会把它当作备用的Web节点,只要还有存活的其他节点,就不会启用备用节点。

(测试:负载均衡池的一个server后加入backup,退出保存后重启nginx服务,并访问域名,出现的为200.7的解析,当在200.7停用nginx服务时,再解析时,出现的是200.6的解析,表示调用备用的Web节点。)

2.

如果负载均衡池里的server加入down参数,nginx默认会忽略该server,认为他是坏的,或停用的。

实用场景就算一个Webserver坏了,Nginx不再将用户的请求代理给这

个节点,但是nginx仍然在不断对这台server进行健康检测,消耗Nginx的服务资源。因此在我们维修这个坏了的server节点的时候,我们通常需要进入NginxLB配置文件里,给对应损坏的节点后面加入down参数,让Nginx忽略这台Web节点,然后我们再去维修这台坏了的server或者更换一台完好的server节点上去,连接好后,再去掉NginxLBdown参数,平滑重启Nginx

(测试:在一个Web节点后加入down参数,重启服务后,访问域名时,200.7将停用,直接调用了200.6Web节点。)

调度

算法

rr轮询(默认调度算法,静态调度算法)

负载均衡池里的server,如果按照11的比例分配给用户的请求,我们叫做轮询模式:rr

wrr(权重值,静态调度算法)

按权重值比例分配,成为wrr

ip_hash(静态调度算法)(会话保持)

如果按静态调度算法分配,我们成为ip_hash(根据用户的来源IP,计算出一个hash值,如果同样hash值的用户,默认代理给同一个Web节点。)

会话

保持

我们和客服的聊天记录,一般是存在内存里,所以会定期清空。想要保存这些数据,需要占用大量的内存空间,如果要永久保存就要占用数据的空间。对于附件,视频,图片这些大容量的数据资源,一般就会定期清空。

情况1

我们在与A的聊天信息在B也能看到,就是会话保持

情况2

进行会话保持

第一种:ip_hash,同一个IP地址的用户,永远代理给同一个Web节点来处理。

虽然ip_hash维持了用户的会话保持,但是,同一个IP地址永远代理给同一个Web节点,也就意味之失去了,负载均衡的意义,根本就不可能真正的负载均衡了。

第二种:一致性hash算法

开源nainx没有一致性hash算法,淘宝二次开发的tengine才有,要使用这种算法,需要取官网下载补丁包,打补丁

根据用户请求的uri进行hash

第三种:cookie

用户访问网站的时候,网站可以给用户下发一个叫做cookie的文件,保存在用户的浏览器里,开发可以向cookie里写数据,将验证码的答案写入到cookie里。那么用户再次访问网站的时候,WebB可以通过读取用户的cookie信息,来知道具体的答案是多少,从而对用户的验证码进行验证。

这个过程是开发实现的。

第四种:session

session是运维解决的。

php默认会将用户的验证码写入到本地的session文件里,远程将session写入到redis(内存型数据库缓存)里。修改PHP的配置文件里的session保存路径。

盗链

在开发的动态网页里,其实根本没有图片,动数据都是文字数据,而图片是存在存储里,既不是在数据库中,也不是在网页代码中。

一般在工作中,我们通过Nginx反向代理,至少要分三类型的业务:读动态业务,写动态业务,读静态业务

location过滤的是uri部分,如URL为:http://www.baidu.com/index,它的URIindex

访问www.yunjisuan.com,默认进第一个负载均衡池,进入读动态

访问www.yunjisuan.com/upload/xxx.jpg,进入第二个负载均衡池,进入写动态

解析

流程

一般解析流程为:用户输入域名,反向代理代理给动态集群,找到首页,首页激活代码,从数据库拿出动态数据(可能是文字或图片,电影的地址等),然后把他们填充到页面里,返回给用户,用户的浏览器解析到文字直接显示到浏览器,解析到图片会重新发起一个URL,经过反向代理过滤,到静态集群,通过存储,把对应的图片取出,显示到浏览器中。因此,当网速很慢时,打开网站,会先显示文字,然后图片再一点一点地刷新出来。

思考

问题

  1. 用户当前临时上传的头像图片,一刷新用户就看到是如何实现的?

  1. 盗链图片,盗链电影如何实现?

用户上传图片附件,该内容放在NFS里;动态找MySQL;静态找NFS

用户上传的图片附件要写入到NFS中,所以NFS需要挂载到上传;用户从静态进行读取数据,所以NFS也要挂载到静态。

基本流程:红箭头:上传;黑箭头:读取。

同一个页面,数据会变,说明他是动态网页。既然头像变了,说明头像对应的图片地址就变了,因此图片的地址,是保存在数据库里的。

刷新后就能直接看到,是因为在上传用户图片时,不光写入到了NFS里,同时在MySQL动态里也存储了一份,这样用户在通过同台访问个人中心直接就能访问MySQL,然后返回给用户。

什么是盗链

好比,原本是用户给爱奇艺钱,在爱奇艺看电影,但是我弄了一个链接,用户将钱给我,然后连接到爱奇艺的存储服务器看电影,而我却并没有真实存储电影的服务器,从而减少了存储服务器的成本,但是让用户看到了想要的结果。

盗链操作举例

1.

搜索一个图片,注意:不要是富含链接的图片(富含链接的图片:点击图片弹出网页)复制图片的地址。

2.

新建一个记事本,编写内容:将红色方框内的内容换成图片的链接,保存退出,然后将txt格式改成html后缀格式。

3.

双击这个文件

这样的操作就是简单的盗链操作,电脑上并没有这个图片,但是可以通过网页链接进行跳转访问。

预防

盗链

打水印,来源于名。这样用户看多了,就会去原站,因为他认为原站更专业。

盗链

操作

作业:三台设备,一个LB负载均衡器,一个动态Web,一个静态Web。通过负载均衡器访问动态Web的域名,让其从静态服务器上取图片。

步骤:在静态Web上做一个网页,内容如下,同时将图片文件放在该网页目录路径下。

然后在动态网页中编写内容如下:

其意思就是在静态Web服务器上建立一个可以访问图片的链接,然后在再动态服务器上建立一个域名链接,让其链接到静态Web服务器某图片的链接,这样就可以达到输入动态服务器域名来访问静态服务器图片的目的。最终的操作是在负载均衡器上输入curl 域名,出现的是网页IP是动态服务器的IP

//通过动态Web服务器日志发现,LB负载均衡器通过域名访问过自己

最终结果

老师的要求的访问www.xiaofa.com域名,链接到的域名应该为www.xiaofa.com/static/1.jpg,我图省事就没弄,其实方法原理相同,只要再加一个location模块,然后更改链接路径即可。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值