本帖最后由 LukeLiu 于 2020-4-2 11:14 编辑
什么是反向代理?
如果格友们不是太清晰反向代理是的概念,不用担心,可以看看我发现的这篇文章,漫画图解了反向代理的概念:漫画图解什么是反向代理 大概理解了概念后,我们就落地对应的工具,本系列帖子选用Nginx作为主要的反向代理服务器。
为什么要给活字格加持反向代理呢?我们为活字格加持反向代理,既要学习新的概念,还要完成一堆配置,好生辛苦,回头想想我们为什么要这样做呢?这么做的目的并不是简单为了酷炫,肯定是本着要解决实际问题出发。那么,这么做能解决哪些问题呢? 我们整理了如下场景的需求,在有了反向代理服务器的加持后,实现这些需求将变得简单。
安全相关
1. 安全审计
假如格友的公司有安全规定,规定业务服务器只可以在内网,不可以直接暴露在公网,以防止坏人恶意扫描端口实施攻击破坏。这种场景,要实现公网访问内网的活字格服务器,要借助公司允许的反向代理服务器,具体来讲,我们在公网环境借助反向代理服务器把我们的请求转发给内网特定IP与特定端口的活字格服务器,实现在公网环境安全的使用活字格,如图:
2. 授权控制
借助反向代理服务器,帮助活字格应用实现访问控制,比如: 一定程度的反爬虫 限制访问者的国家或地理位置。 过滤IP访问
这里举一个IP访问控制的栗子,咱们维护一套IP白名单,当反向代理服务器检测到请求的来源IP在白名单内时,请求正常流转给活字格服务器,当请求来源IP不在白名单内时,直接拒绝服务或者返回一个高冷的提示的静态页面。机灵的格友现在也许想到了,钉钉与微信的开放API的第一层安全限制,就是这么做的。还有,想到论坛有格友,之前发帖询问想在活字格里实现控制访问,现在是不是有新的思路啦?
3. 日志记录
反向代理服务器能够记录所有的Http请求日志,甚至还可以自定义日志的格式,后续这些日志的价值可以用来做数据挖掘,比如行为分析,性能分析等。
性能相关
1. 负载均衡
当我们活字格应用面对高并发场景时,对于性能有了更高的要求,这时,可以在一台反向代理服务器后面平铺多台活字格服务器,这台反向代理服务器充当负载均衡的作用,把用户端的请求按照一定的策略转发给后面的活字格服务器,多台活字格服务器同时提供服务,以突破高并发场景下的性能瓶颈。
希望各位格友能够深入思考,如果目前有遇到性能问题,到底是设计上的不足,还是真实需要做负载均衡。
2.静态资源缓存与CDN转发
当匹配到静态资源请求,可以配置反向代理服务器进行缓存或者转发请求到CDN服务器上,以加速用户的Web访问速度。
高可用保障相关
企业级应用,笃信的信条是“线上大于天”。
不停机升级。系统升级时,反向代理服务器先把流量全转给当前版本的活字格服务器,以保持业务系统正常提供服务。离场的服务器进行系统升级,操作人员有充足的时间与测试环境验证是否升级成功。这批服务器升级完成后,反向代理切换流量的流转方向,再去操作还没有升级的服务器。最终,我们升级了全部的服务器,过程里,业务服务没有任何中断。可以说,借助反向代理,让我们有能力做到“给奔跑的赛车换轮胎”。
实用性功能相关
1. 更简单的处理跨域
什么?! 还可以处理跨域。对的!你没有看错! 咱们在活字格服务器端开发后端的接口,有时纯粹是为了转发请求,以绕过浏览器的跨域限制。也正因为后端接口需要写代码实现,会经常发生这样一个喜闻乐道的现象:格友们本来从处理跨域问题出发,获知要写代码实现后端接口,其中会有一批小伙伴的问题流向,最终变成了“如何学习C#从入门到放弃”。这条不归路上 ,有熟悉的我跟着身后。 现在,想象这样一个需求,我们要在活字格里实现请求中国天气网的API或者天气数据,在没有反向代理服务器加持之前,别问,问就是写服务器端代码。 若加持了反向代理服务器,顶在活字格服务器的前面,之后,我们就可以这样实现: 了解这样一个姿势后,如果再有需求只是想请求第三方API的数据,考虑借助反向代理服务器直接另辟新径,可以作为Plan B。
2. 更简单的实现HTTPS访问与HTTPS证书更新
反向代理服务器软件会有丰富的周边工具,比如可以很容易的实现自动更新短时限的免费HTTPS证书。这样,用户和反向代理服务器之间的通讯是基于https的,而反向代理服务器与活字格服务器之前的通讯是http协议的。对于用户来说是无感的,对于我们,可以说是低成本的实现了HTTPS服务。
总结
- 了解反向代理基础的概念,原理,与具体的工具
- 了解使用了反向代理技术能为活字格带来的价值
如果你已经开始思考一个问题——使用反向代理技术如何具体地对接活字格呢?
别急,我们一起来,继续看下一篇—— 一看就会,超有用活字格技能:八十,当活字格遇上反向代理——动手实现
|