0X01 正向代理#
正向代理是一个位于客户端和原始服务器 (origin server) 之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标 (原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理类似一个跳板机,代理访问外部资源。
0X02 反向代理#
反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间 (name-space) 中的内容发送普通请求,接着反向代理将判断向何处 (原始服务器) 转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
(1)保证内网的安全,可以使用反向代理提供 WAF 功能,阻止 web 攻击
大型网站,通常将反向代理作为公网访问地址,Web 服务器是内网。
(2)负载均衡,通过反向代理服务器来优化网站的负载
0X03 区别#
正向代理中,proxy 和 client 同属一个 LAN,对 server 透明;
反向代理中,proxy 和 server 同属一个 LAN,对 client 透明。
实际上 proxy 在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把前者那种代理方式叫做正向代理,后者叫做反向代理。
从用途上来区分:#
- 正向代理:正向代理用途是为了在防火墙内的局域网提供访问 internet 的途径。另外还可以使用缓冲特性减少网络使用率
- 反向代理:反向代理的用途是将防火墙后面的服务器提供给 internet 用户访问。同时还可以完成诸如负载均衡等功能
从安全性来讲:#
(1)正向代理:正向代理允许客户端通过它访问任意网站并且隐蔽客户端自身,因此你必须采取安全措施来确保仅为经过授权的客户端提供服务
(2)反向代理:对外是透明的,访问者并不知道自己访问的是代理。对访问者而言,他以为访问的就是原始服务器