来源丨爱讲鸡汤的油腻大叔
jianshu.com/p/fd035aa73d8a
概 述
关于“代理”的概念,日常学习开发过程中经常听到。比如平时工作出差时,假如想在外部公网访问公司内部局域网时,需要连公司的代理跳板机进行代理访问;再比如后端开发部署 java项目时,在公司里面也听到了运维那边各种利用 nginx来支持反向代理部署。
那什么是正向代理,什么是反向代理?
正向代理
正向代理是大家平时最常接触到的代理模式。
正向代理最大的特点是客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
客户端 → 代理服务器 → 服务器地址
总的来说,正向代理代理的是 “客户端”,是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回客户端。客户端必须要进行一些特别的设置才能使用正向使用正向代理。
正向代理的用途:
访问原来无法访问的资源,如Google
可以做缓存,加速访问资源
对客户端访问授权,上网进行认证
代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理
多个客户端给服务器发送的请求,Nginx服务器接收之后,按照一定的规则分发给了后端的业务处理服务器进行处理了,此时,请求的来源是客户端,但是请求具体来自哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理的角色。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。反向代理,"它代理的是服务端",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
反向代理的作用:
保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
负载均衡,通过反向代理服务器来优化网站的负载
正、反代理的区别
直接上图了
几种常用的 web服务器对比:
项目开发场景
通常情况下,我们在实际项目操作时,正向代理和反向代理很有可能会存在在一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向单利服务器,反向代理了多台真实的业务处理服务器。具体的拓扑图可能如下:
后 记若有错误或者不当之处,可在本内反馈,一起学习交流!
更多热文在此:
● Spring Boot 系列实战文章合集(源码已开源)
● 程序员写简历时必须注意的技术词汇拼写
● 基于Spring Security OAuth2的SSO单点登录+JWT权限控制实战
● 从一份配置清单详解Nginx服务器配置
● 如何在Windows下像Mac一样优雅的开发
● Docker容器可视化监控中心搭建
● 利用ELK搭建Docker容器化应用日志中心
● RPC框架实践之:Google gRPC
● 一文详解 Linux系统常用监控工具
更多 务实、能看懂、可复现的 技术文章、资源尽在 CodeSheep,欢迎扫码订阅,第一时间获取更新 ⬇️⬇️⬇️