1.什么是代理服务器(Proxy Serve)?
提供代理服务的电脑系统或其它类型的网络终端,代替网络用户去取得网络信息。
2.为什么使用代理服务器?
提高访问速度:
由于目标主机返回的数据可以存放在代理服务器中,所以客户下一次访问此站点相同的数据时,会直接从代理服务器的中读取,起到了缓存的作用,对于热门网站能明显提高访问速度。
防火墙作用:
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可以在代理服务器上设限,过滤不安全信息。同时正向代理中客户端可以隐藏自己的IP,免受攻击。
突破访问限制:
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的浏览器就是利用了代理服务器,可以直接访问外网。
3.正向代理(Forward Proxy)
正向代理:一个位于客户端和原始服务器之间的服务器,客户端为了从目标服务器取得内容,向代理代理发送一个请求并指定了目标服务器,然后代理服务器向目标服务器转发请求并将获得的内容返回给客户端。平时我们说的代理就是指正向代理。
举个例子:我们想从Google上查询API文档,但由于某种原因访问不了,所以借助代理服务器(如:ShadowSock),然后让它去Google获取文档信息,最后返回给我们。
那么,此处的ShadowSock就是正向代理,为客户端做了代理。此过程中,Google作为服务端其实并不知道我们(客户端)访问了它,只知道代理服务器(ShadowSock)访问了它。通俗点就是为服务端作了代理。
4.反向代理(Reserve Proxy)
反向代理:一个部署在服务端,用于接受客户端请求,且将客户端请求转发给真实(内部)服务器的代理者(服务器),并将真实服务器的反馈结果返回给代理者,最后由代理者将结果返回给客户端。
举个例子:我们想给自己的微信服务号申请认证服务,那么我们向微信发起了认证请求,此时微信并不自己去作认证,而是将此任务分派给与其合作的认证商,最后认证商返回结果给微信,再由微信告知我们认证是否成功。
那么,此处的微信服务号认证服务就是反向代理,为服务端(微信)作了代理。此过程中,我们作为客户端并不知道我们的认证请求是由认证商完成的,只知道微信帮我完成了认证。
5.正向代理和反向代理的区别
位置不同:
正向代理,架设在客户机和目标主机之间;
反向代理,架设在服务器端;
代理对象不同:
正向代理,代理客户端,服务端不知道实际发起请求的客户端;
反向代理,代理服务端,客户端不知道实际提供服务的服务端;
用途不同:
正向代理,为防火墙内的客户端提供访问网络的途径;
反向代理,将防火墙内的服务器提供给网络访问请求;
安全性不同:
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务
反向代理的客户端对服务端都是透明的,但客户端却并不知道自己访问的是哪个服务端
6.正向代理的应用
1. 访问原来无法访问的资源
2. 用作缓存,加速访问速度
3. 对客户端访问授权,上网进行认证
4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
7.反向代理的应用
1. 保护内网安全
2. 负载均衡
3. 缓存,减少服务器的压力
Nginx作为著名的反向代理服务器,安装在服务端,主要用于转发客户端请求,并把请求合理转发给后台哪台真实服务器来处理当前请求。