正向代理和反向代理
一、概念
正向代理:(为客户端服务)
- 是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。
- 为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。
- 正向代理的情况下客户端必须要进行一些特别的设置才能使用。
反向代理:(为服务器端服务)
正好相反。对于客户端来说,反向代理就好像目标服务器。
并且客户端不需要进行任何设置。
客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反向代理后面的服务,也因此不需要客户端做任何设置,只需要把反向代理服务器当成真正的服务器就好了。
二、区别
正向代理:
- 代理客户端,为客户端收发请求,使真实客户端对服务器不可见;
- 正向代理需要你主动设置代理服务器ip或者域名进行访问,由设置的代理服务器ip或者域名去获取访问内容并返回;(隐藏客户端)
- proxy和client同属一个LAN,对server透明;
反向代理:
- 代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。
- 反向代理不需要你做任何设置,直接访问服务器真实ip或者域名,但是服务器内部会自动根据访问内容进行跳转及内容返回,你不知道它最终访问的是哪些机器。(隐藏服务端)
- proxy和server同属一个LAN,对client透明
总结:实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把前者那种代理方式叫做正向代理,后者叫做反向代理。
2.1 从用途上来区分:
- 正向代理:正向代理用途是为了在防火墙内的局域网提供访问internet的途径。另外还可以使用缓冲特性减少网络使用率
- 反向代理:反向代理的用途是将防火墙后面的服务器提供给internet用户访问。同时还可以完成诸如负载均衡等功能
2.2 从安全性来讲:
- 正向代理:正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
- 反向代理:对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器
三、使用场景
3.1 正向代理
正向代理的一个功能(俗称翻墙),也即:
用户A无法访问facebook,但是能访问服务器B,而服务器B可以访问facebook。于是用户A访问服务器B,通过服务器B去访问facebook,,服务器B收到请求后,去访问facebook,facebook把响应信息返回给服务器B,服务器B再把响应信息返回给A。这样,通过代理服务器B,就实现了翻墙。
作用:
- 为防火墙内的局域网客户端提供访问Internet的途径。
- 正向代理还可以使用缓冲特性减少网络使用率。
- 通过正向代理可以进行翻墙。
3.2 反向代理
反向代理的一个功能(比如负载均衡),也即:
假设用户A访问 newmood.top/something.html ,但 newmood.top上并不存在something.html页面,于是接收用户请求的该服务器就偷偷从另外一台服务器上取回来,然后返回给用户,而用户并不知道something.html页面究竟位于哪台机器上。
作用:
- 保护和隐藏原始资源服务器
- 加密和SSL加速
- 负载均衡
- 缓存静态内容
- 压缩
- 减速上传
- 安全
- 外网发布