大猫 (Madao) - まるでダメなおっさん

正向代理与反向代理的区别

by bigCat 42 Comments

大家圣诞快乐~

和小操同学讨论到反向代理的时候逻辑混乱没理清,发一篇再理一次,哈

正向代理的概念

正向代理,也就是传说中的代理,他的工作原理就像一个跳板,
简单的说,
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器
这个代理服务器呢,他能访问那个我不能访问的网站
于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容
代理服务器去取回来,然后返回给我

从网站的角度,只在代理服务器来取内容的时候有一次记录
有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站

结论就是 正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

反向代理的概念

继续举例:
例用户访问 http://ooxx.me/readme
但ooxx.me上并不存在readme页面
他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户

但用户并不知情
这很正常,用户一般都很笨

这里所提到的 ooxx.me 这个域名对应的服务器就设置了反向代理功能

结论就是 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样。

两者区别

用途上来讲:

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将 防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

安全性来讲:

正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。

反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

淫荡开发

因为某些特殊原因,我平时写前端代码都是本地开发(貌似你也是)
我怎么知道我的代码嵌入后是什么样子呢?
在本地搭建一个网站?公司网站一个机房的机器都放不下,更别说我一台PC鸡

这个时候就可以利用反向代理
我先把公司网址例如 miao.in 改HOST方式指向127.0.0.1 也就是自己机器
然后在自己机器上装一个 Apache
并且设置反向代理整站到线上服务器,但排除了目录 faq

于是我输入 http://miao.in/family/ 的时候,请求发送到本机的apache,本机的apache去线上获取内容吐给我,就像他自己的一样
而我输入 http://miao.in/faq/的时候,请求发送到本机的apache,apache发现这是个排除的目录,于是找本机上对应的目录文件(开发目录)吐给我

这样子就实现了完全模拟线上环境的开发模式

这个时候有人会跳出来说,我靠,用Fiddler不就行了
原理是一样的,亲爱的windows用户

小操同学你的姓太给力了,每次大喊:”操!吃饭去”
都是一种幸福啊~

Fiddler

http://www.fiddler2.com/ 是windows下神一样的东西,有兴趣自己去了解下
淫荡的佩玉同学开发了一个以他老婆命名的 Fiddler 插件,我们大家都爱用
不过透露的话会以泄露国家机密罪爆菊花,就不提了

参考资料

http://en.wikipedia.org/wiki/Reverse_proxy
http://baike.baidu.com/view/1165595.htm
http://zhuzhsh.javaeye.com/blog/293437

Comments ( 42 )

  1. Reply小阳
    经常逛扣粽的好处是第一时间能看到猫哥更新日志 圣诞快乐 :)
  2. Reply电脑知识收藏夹
    果断拿板凳坐。反向代理,早玩过了……以前折腾iirf的时候。超赞。 :!:
  3. Replyakasuna
    现在就有很多大型门户将 Nginx 用作反向代理服务器,一个 Nginx 后面是 N 个 Apache
    • ReplybigCat
      @akasuna, MV试验阶段我也是这么干的,后来发现多IP的情况配合cpanel不好弄,就搞回apache独掌大权的设置,流量不大,无所谓
  4. Replymeters
    你终于通过这个日志挽回了颜面哇。。。 :P 每次吃饭的时候我的压力都好大。。。。 :oops:
  5. Reply梧桐
    学习了,谢谢分享,马上就去研究Fiddler..
  6. Reply囧啊囧
    这很正常,用户一般都很笨 钓鱼网站 说不是他
  7. Tweets that mention Reader Share: 正向代理与反向代理的区别 -- Topsy.com
    [...] This post was mentioned on Twitter by kDolphin and DaBai. DaBai said: Reader Share: 正向代理与反向代理的区别 http://bit.ly/h2NyNr [...]
  8. Reply夜涩
    反向代理怎么听着像下载镜像,就近取源! 不懂技术 苦煞!
    • ReplybigCat
      @夜涩, = = 那种是根据客户端位置,做跳转,你会发现不同跳转目的地的url是不一样的,更象是CDN
  9. Replymice
    :lol: 看上淫荡开发了..去试试.
  10. Replyicarian
    大猫老师的博文,真是好啊,深入浅出,长如短出,为我们关心的问题答疑解惑,我受益匪浅了。 :!:
  11. Replytimmy
    貌似这个可以用来YY
  12. Reply豆丁
    猫的日志好逗啊 :lol:
  13. 正向代理与反向代理的区别 | 中文IT博客聚合
    [...] | Permalink | 大战2回合 | Post tags: fiddler, proxy, reverse-proxy | MediaTemple | (miao) [...]
  14. Reply佐佐制造
    :roll: 点错,直接就发了。没有删除功能。 我一直把 wc.com HOST方式指向127.0.0.1 然后在本机装BBS放自己的收藏,直接本地拿,很快。
    • ReplybigCat
      @佐佐制造, 哈,我喜欢tab+空格来发表 很多公司喜欢DNS劫持了搞个性域名
  15. Replyhzlzh
    Fiddler是亮点 是亮点
    • ReplyJimmy哥
      @hzlzh 没看懂Fiddler这个梗
    • ReplyJimmy哥
      @hzlzh 没看懂Fiddler这个梗,求解析
  16. Reply囧啊囧
    8O 过年回来发现RSS出来一堆老文章
  17. Replynetwjx
    实际使用起来可能会有些问题 比如整合进sso session共享等
  18. Reply丿玩
    很赞呀,冒似这种反向代理不动态SESSION是个问题哇。。。
  19. Replyshanks
    LZ文风很有爱 = =
  20. Reply艳文
    正需要补充这样的知识。。。。文风很趣致
  21. Reply网友
    介绍那个正向代理。。一个词就概括了啊。
  22. Replylweo
    感觉你解释正向代理时有误....不知道是你表述有误还是我理解有误“然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理”正向代理应该是只转发http请求,然后原始服务器将内容返回给客户端吧?代理上应该没有任何web资源(原始服务器上的内容)可以这么说正向代理只做了桥梁,反向代理既做了桥梁还做了仓库。。。
    • ReplybigCat
      @lweo 这里所说的代理商的储存同时存在于正向和反向,代理层面的缓存目的同普通缓存一样,避免同样内容拿2次,当然也可以每次都重新取内容不缓存,可以通过s-max-age来控制 他们俩都是桥梁,也都可以选择是否做仓库
  23. Nginx 正向代理(Forward)&&反向代理(reverse proxy) | Huang Jianyu 黄建宇's SKY
    [...] 参考:http://ooxx.me/reverse-proxy.orz [...]
  24. Reply陈煜东
    有没有什么软件可以有代理服务器。。网页版的代理(phpproxy这样,有些不能用)(通过nginx的代理,不能批量更改网页的网址)。。ezproxy不会使用。。有什么软件吗?
  25. ReplyJoker
    其实可以这么理解,正向代理是用户的代理,反向代理是服务器的代理
  26. Reply捣乱
    通俗易懂。如果遇到请求量大的问题,可以采用反向代理的方案,负载平衡。
  27. 利用语音信箱绕过两步验证,轻松入侵他人账户 - 科技辣
    […] 注 1:用户访问 http://ooxx.me/readme,但 ooxx.me 上并不存在 readme 页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户这里所提到的 ooxx.me 这个域名对应的服务器就设置了反向代理功能。结论就是反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。(大猫の意淫筆記) […]
  28. 利用语音信箱绕过两步验证,轻松入侵他人账户 | BugSec
    […] 注 1:用户访问 http://ooxx.me/readme,但 ooxx.me 上并不存在 readme 页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户这里所提到的 ooxx.me 这个域名对应的服务器就设置了反向代理功能。结论就是反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。( 大猫の意淫筆記 ) […]
  29. 利用语音信箱绕过两步验证,轻松入侵他人账户 | 内容采集
    […] 注 1:用户访问 http://ooxx.me/readme,但 ooxx.me 上并不存在 readme 页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户这里所提到的 ooxx.me 这个域名对应的服务器就设置了反向代理功能。结论就是反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。(大猫の意淫筆記) […]
  30. ReplyThreeTree
    hello,看了你的文章,学到很多,正在尝试你说的淫荡开发。遇到一些问题,没有成功,想请教一下。 第一个问题就是:如果修改host文件,把http://miao.in修改为127.0.0.1,那么在apache的配置文件中又怎样反向代理到线上环境呢?毕竟域名已经指向线下环境了,难道用的是线上IP? 第二个问题是怎样排除某个目录不使用反向代理?我使用的是ProxyPass /common !,并没有起到作用。
    • ReplybigCat

      = = 当时忽略了我厂的资源文件用的是不同于域名的CDN域名...你说的对,没法自己反向自己,所以还是用fiddler吧

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>