前言
多年前,我记得我当时才工作一年,只会做项目,原理啥的都不太懂,大家也知道面试的时候面试官是考虑到时间成本的,如何在最短的时间内挑选出来最合适的人选是面试官需要做的。
于是出现了下面的对话,当时的我很萌新,大家就当看个笑话
面试官:笔试题做完了么(面试官礼貌性询问)
我:做完了(8道题有3道不会,不过也许别人也不会,😄)
面试官:今天我们的前端负责人请假了,就由我来面试你吧(我看着对方高大威武给我一种威压)
我:好的(面试我的不会是个后端吧)
面试官:你说一下从你在url中输入百度网址,到弹出来百度页面中间经历了哪些过程呀?(我擦,这不都是访问接口的问题么,我心想果然是个后端)
我:(很懵,当时没有背过面试题)嗯...路由...调制解调器...服务器...数据库(我也不知道答啥就答了一堆名词)
面试官:过程呢?(略显急躁ing)
我:嗯....嗯....嗯...(想找个地缝钻进去)
面试官:(面试官很无奈)比如百度有两台服务器,一台在北京,一台在四川,你访问的为什么是北京这一台,而不是四川那一台?
我:嗯....嗯....嗯...(想找块豆腐撞死得了)
面试官: 感觉你不太适合我们的岗位...(好哦,我终于解脱了)
多年过去了,我依然记得当时面试的场景,当时我就是一个菜鸡。如今我觉得这个问题我真的可以答好了。
什么是nginx?
我觉得还是不要整啰里吧嗦一大堆,还是亲民一些好,你就简单的把nginx当成一个代理就行了,回答的高大上点,就是可以做正向代理,也可以做反向代理,也可以扯一点负载均衡就回答这么多就行了。
那问题来了,什么是代理?
这么一看代理你说你熟呀,这不就是中介么,看着是有点像,挺好的,你就把他当成中介,怎么能记住就怎么记
你常见的代理有哪些?
- vpn:是的,这是正向代理
- 访问百度:这是反向代理
你开始蒙了,麻蛋,为啥一个是正向,一个是反向呢?
正向代理
正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。
正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的
这不就是VPN么,你想想你在国内访问google是访问不到的,因为局域网的原因,这个局域网相当于国内那么大,但是新加坡可以访问到呀。
这个过程中涉及到三个角色,你在国内的电脑(客户端),新加坡的服务器(代理服务器),google服务器(目标服务器)。你就可以访问代理服务器,代理服务器访问目标服务器,然后代理服务器把目标服务器的内容返回给客户端。此时目标服务器不知道客户端的IP
技术不成熟的小伙伴千万不要自己搭建正向服务器哦,小心查水表
反向代理
反向代理,指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器,只知道去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。
反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的
这不就像你访问百度网页么,你以为你访问的是百度服务器,其实你访问的代理服务器。
为什么你访问的是代理服务器呢?
比如百度,每天有几百万人访问,如果每个人都访问的源服务器,那么服务器早崩了。
所以百度那边得考虑,高并发,安全可靠性,缓存,所以就有了代理服务器。
这里的代理服务器我们主要讲两个负载均衡和CDN(内容分发网络),是的,他们两个都是代理服务器
负载均衡
负载均衡主要解决两个问题,高并发和安全可靠性
负载均衡诞生的原因
- 高并发:将请求分发到多个服务器上。
- 安全可靠性:某台服务器发生故障,其他服务器仍然可以接收和处理请求。
CDN(内容分发网络)
CDN主要解决的问题是缓存,减少延迟
CDN诞生的原因
- 全球性访问:传统的服务器架构可能导致距离较远的用户访问延迟高。CDN通过在全球范围内部署边缘节点,将内容缓存到离用户更近的位置,从而加快内容传输速度,减少延迟。
- 大规模静态资源:现代网站和应用程序通常包含大量的静态资源(如图片、视频、CSS和JavaScript文件等)。CDN可以将这些静态资源缓存在边缘节点上,从而减轻源服务器的负载,提高用户访问的速度和可靠性。
- 流量管理:CDN可以根据用户的地理位置、网络状况和请求类型等信息,动态地选择最佳的节点和路径来提供内容,提高用户访问的质量和可用性。同时,CDN还可以提供防御分布式拒绝服务(DDoS)攻击等安全功能。
如何一眼分辨是正向代理还是反向代理
- 代理安装位置:代理如果和客户端安装在一起就是正向代理,代理如何和服务器安装在一起就是反向代理
- 隐藏角色:正向代理是目标服务器不知道客户端的存在,反向代理是客户端不知道服务器的存在
- 目的不同。正向代理主要是用来解决访问限制问题。而反向代理则是提供负载均衡、安全防护等作用。二者均能提高访问速度。
什么时候需要Nginx?
通过上面的学习,无论是VPN,还是负载均衡还有CDN,是的他们都可以使用nginx来做
所以,什么时候需要nginx也就很好说了,当您需要高并发,安全可靠性和缓存时,Nginx是一个非常有用的工具。
总结
- 通过上面的文章,我们知道了什么是正向代理,什么是反向代理
- 正向代理的我们主要讲了VPN,反向代理我们讲了负载均衡和CDN
- 然后就是讲了一下如何快速区分正向代理和反向代理
- 最后就是我们什么时候会用到nginx
学习上面的东西并且以图解相辅,疗效更佳