转载请注明出处: blog.csdn.net/jinixin/article/details/89574956

谈到正向代理和反向代理, 首先就要先了解代理的概念. 代理, 即代理服务器(Proxy Server), 一般我们会省略”服务器”这几个字, 代理在客户端和服务器之间充当中间人.

具体过程如下, 代理接收客户端发来的请求, 代理从请求中解析出目标服务器, 并向目标服务器转发请求, 在得到目标服务器的响应后, 便将响应转发回客户端. 期间代理可以选择性的缓存响应, 以便加速后续相同访问, 因此一般代理都有较大的磁盘空间.

正向代理

正向代理的定义

下图中的"代理服务器"便是正向代理服务器, 简称正向代理.

客户端所有的网络请求都通过代理服务器中转. 目标服务器不知道客户端的存在, 其认为访问者就是代理服务器, 不知道真正的访问者是谁.

整个过程有点类似于外汇兑换, 客户端是客户, 正向代理是银行, 目标服务器是外汇提供国. 客户知道自己要兑换某国家的外汇, 外汇提供国并不知道是哪个客户来兑换的, 其只知道自己在和某某银行交易.

正向代理的作用

1. 网络加速器: 加速部分站点访问.

2. 突破访问限制: 突破公司对部分网络的屏蔽.

Request URL: https://www.baidu.com.hk/
Request Method: GET
Status Code: 200 
Remote Address: 216.58.221.238:443

上面为开启代理前, 浏览器的请求直接发送给百度服务器. 下面为开启代理后, 浏览器的请求转交给代理服务器(127.0.0.1:1086).

Request URL: https://www.baodu.com.hk/
Request Method: GET
Status Code: 200 
Remote Address: 127.0.0.1:1086

3. 防火墙: 用作内部网络的出网跳板机, 因其可以解析请求与响应, 从而能拦截一部分危险响应.

4. 保护客户端隐私: 请求是通过代理中转的, 因此目标服务器不知道请求的真正发起者, 故可以较好的隐藏客户端IP. 题外话, 通过一层代理还是比较好追查的, 要想成为无法追踪的隐形人, 可以考虑使用”代理链”.

反向代理

反向代理的定义

下图中的代理服务器便是反向代理服务器, 简称反向代理.

代理服务器本身并不具备处理请求的能力, 因此其会将收到的请求按照负载均衡算法转发给背后的应用服务器, 在得到应用服务器响应后, 其再将响应转发给相应客户端. 客户端并不知道应用服务器集群的存在, 它们认为代理服务器便是目标服务器.

整个过程有点类似于超市, 客户端是顾客, 反向代理是超市, 应用服务器是商品提供商. 顾客并不知道某商品背后的商品提供商是谁, 也不会直接和某商品提供商直接交易, 顾客都是和某超市进行交易的.

反向代理的作用

1. 负载均衡: 将请求压力平均负载到多台服务器上, 从而保证背后的整个应用服务器集群稳定.

2. 保护服务器的隐私: 隐藏背后的服务器集群, 只向客户端暴露自身这一个IP.

3. 缓冲访问峰值: 向背后的应用服务器转交完整的有效请求.

4. 缓存: 缓存静态资源.

反向代理的杰出代表: Nginx服务器

总结

我们可以简单认为, 代理服务器在客户端侧,  该代理便是正向代理. 代理服务器在服务器侧, 该代理便是反向代理. 要注意的是, 这个"在某侧"更多是逻辑上的, 不要从局域网或地理位置远近来理解.

文中如有不当之处, 还望包容和指出, 感谢

「Nginx」什么是代理相关推荐

  1. 「补课」进行时:设计模式(5)——从 LOL 中学习代理模式

    1. 前文汇总 「补课」进行时:设计模式系列 2. 从 LOL 中学习代理模式 我是一个很喜欢玩游戏的人,虽然平时玩游戏的时间并不多,但我也是一个忠实的 LOL 的爱好者,就是段位有点惨不忍睹,常年倔 ...

  2. 如何让macOS的「终端」走代理

    很多使用 Mac 的用户都很喜欢从 HomeBrew 下载管理第三方应用程序,并推荐给刚入门的小白们.但是小白们通过 HomeBrew 获取安装命令并输入到终端后,却发现总是连接失败. 当然,这是因为 ...

  3. 让你的系统“坚挺不倒”的最后一个大招——「降级」

    来源:跨界架构师 前面两篇我们已经聊过了「熔断」(如何在到处是"雷"的系统中「明哲保身」?这是第一招)和「限流」(想通关「限流」?只要这一篇),这次我们聊的就是「高可用三剑客」中剩 ...

  4. 「面试」到阿里第五轮后我才知道所谓的URL是什么

    计算机网络的重要程度不言而言,也是非常的复杂.今天我将从输入URL这个简单例子开始,一起探索数据包的心路历程.先点个赞再文章的大纲,么么哒. 1 源头------网址 网址即平时所说的URL.就是经常 ...

  5. 从知乎「悟空」看一个成熟的Anti-Spam系统演进之路

    Hi there! 距离 2015 年 4 月「悟空」正式与大家见面,已经整整三个年头了.随着知乎的不断发展壮大,过去的一段时间,「悟空」不断面临着新的考验,并持续地在优化升级.接下来跟大家系统分享一 ...

  6. 「AutoML」强化学习如何用于自动模型设计(NAS)与优化?

    作者&编辑 | 言有三 一直以来,网络结构的设计是一个非常需要经验且具有挑战性的工作,研究人员从设计功能更加强大和更加高效的模型两个方向进行研究,随着各类经典网络设计思想的完善,如今要手工设计 ...

  7. Linux 小知识翻译 - 「代理服务器」

    这回聊聊「代理服务器」. 在公司里,不通过代理服务器无法连接互联网的,由于代理服务器的原因,有些服务的使用是受到限制的. 有人可能会觉得为什么会存在这种东西?(这里指代理服务器) Proxy本来的意思 ...

  8. 如何在到处是“雷”的系统中「明哲保身」?这是第一招

    来源:跨界架构师 当我们工作所在的系统处于分布式系统初期的时候,往往这时候每个服务都只部署了一个节点. 那么在这样的背景下,如果某个服务A需要发布一个新版本,往往会对正在运行的其它依赖服务A的程序产生 ...

  9. 云信小课堂|简单五步,轻松构建本土「Clubhouse」

    Vol. 2 最近 Clubhouse 一码难求,获得众多互联网圈和投资圈人士的关注,一时之间风靡全球. 但受限于各方面原因,Clubhouse 目前还是存在很多限制,比如采用邀请机制.只能 iOS ...

最新文章

  1. Quantitative Researcher Summer Internship (for Overseas Schools)
  2. XCTF-Reverse:python-trade
  3. 支付宝双接口ILLEGAL_EXTERFACE错误问题
  4. 区块链和数据科学:如果同时应用这两种技术,将会实现什么?
  5. mysqlbinlog配置
  6. Netcore 及SDK版本号问题
  7. 用C++ Builder对图像进行特殊效果处理
  8. 还在用老掉牙的后台模板?来试试这款人类高质量后台模板(Admin Plus)
  9. 显示器接口_显示器接口 - CNZHIQIANG
  10. python中output使用_Python使用input() output()函数输入、输出数据记录
  11. iPhone12打开webview闪退或者白屏
  12. 【OpenCV】之LUT函数
  13. 当代著名国际摄影师相关网站大集合
  14. 英飞凌硅麦可以接收到超声波吗?
  15. 系统集成项目管理工程师考试-项目管理口诀
  16. 基于JAVA校园快递联盟系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  17. Android 之 Project Butter 详细介绍
  18. 如何使用charles+mock替换接口返回来测试
  19. 独角兽项目 1 - 替罪羊
  20. 恐龙纪录片 - 为孩子

热门文章

  1. 如何给自己的网站接入谷歌联盟
  2. Ignite 数据网格快速学习(一)
  3. python的staticmethod,classmethod和装饰器以及闭包
  4. JAVA知识点-适合自学、面试
  5. 简单便宜智能家居解决方案
  6. 推荐系统实践读书笔记-05利用上下文信息
  7. 实验吧-密码学-疑惑的汉字(当铺密码)
  8. Win10 年度最重大更新:代码、理想与爱
  9. 用Matlab求二次多项式,matlab二次多项式拟合
  10. 手机新手上路_术语_各种解释