反向代理和正向代理的区别到底是什么?

2017-05-15 10:21:34 +08:00
 scriptB0y

在网上看了很多资料,还是不理解反向代理与正向代理的区别,感觉就是客户端发请求给代理,代理将服务器相应转发回来。

网上用的很多的是这种类似的图:

但是仔细想想,这两幅图完全一样啊,并没有看出来是“反向”还是“正向”的区别。

那我反向代理也可以说成,客户端不知道服务器地址,发请求给代理,代理去访问服务器,这不就成正向了?

正向代理也可以说成,服务器无法收到客户端请求,于是使用一台代理服务器帮助接收客户端请求,再转发回来,那这不成反向了?

我理解的不同只有这一点:两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端。

求解惑…………

我看过的资料:

  1. http://www.jianshu.com/p/208c02c9dd1d
  2. https://www.zhihu.com/question/24723688
  3. http://z00w00.blog.51cto.com/515114/1031287
  4. https://github.com/moonbingbing/openresty-best-practices/blob/master/ngx/reverse_proxy.md
8248 次点击
所在节点    问与答
28 条回复
D3EP
2017-05-15 13:40:04 +08:00
正向代理是为你服务的,反向代理是为服务器服务的。
tony1016
2017-05-15 13:42:33 +08:00
@scriptB0y 大家应该都转向 GCE 平台了吧,反正免费,不用白不用
tony1016
2017-05-15 13:53:09 +08:00
@scriptB0y 呀,你一说,我一看,原来是被 GFW 认证了
Showfom
2017-05-15 15:01:47 +08:00
然而反向代理稍作修改也是可以访问任何网站的 嘿嘿
huangmingyou
2017-05-15 16:37:49 +08:00
比如访问 www.vphotos.cn/index.html
正向代理: http 请求头里面的 url 是 http://www.vphotos.cn/index.html

反向代理: http 请求头里面的 url 是 /index.html

没有任何代理: http 请求头 url 是 /index.html

正向代理的 url 加了 www.vphotos.cn 是需要告诉代理服务器,目标 web 服务器的主机名,如果不这么写,代理服务器不知道怎么取内容。

但是反向的代理服务器,对客户端来说是透明的。 反向代理服务器,只针对特定的域名提供服务。 而正向的代理,通常是能代理所有域名。
huangmingyou
2017-05-15 16:39:43 +08:00
补充一下,正向代理,浏览器知道代理服务器的存在,所以在 http 请求头里面的 url 会加上域名。 上面说的 http 请求头,是浏览器发出的。
imn1
2017-05-15 16:50:27 +08:00
这幅图两个互换比较容易理解,阴影部分也挪动

正向之外应该是多个 server,反向之外是一个 server
crossoverJie
2017-05-15 17:26:57 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/361342

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX