正向代理:
是一个位于客户端和原始服务器之间服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器,然后代理向原始服务器转交请求并获取内容返回客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的用途
- 访问原来无法访问的资源
- 可以作为缓冲,加速访问资源
- 对客户端访问授权,上网进行认证。
- 代理可以记录用户访问记录(上网行为管理)。对外隐藏用户
例:CCProxy: 代理共享上网和客户端代理权限管理
反向代理:
是指代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给internet上连接的客户端,此时代理服务器对外表现就是一个服务器。
反向代理的作用
- 保证内网的安全,可以使用反向代理提供WAF功能(web防护系统),阻止web攻击。(大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。)
- 负载均衡,通过反向代理服务器来优化网站的负载。
例:nginx的反向代理(通过proxy_pass_http配置代理站点,upstream实现负载均衡。)
负载均衡:
如果计算机节点(或者一组进程)提供相同的服务(计算、数据的读取和存储)。那么对服务器请求就应该均分到这些节点上。这些提供服务额节点被称为server farm、server pool。负载均衡是反向代理实现的
负载均衡的意义:
让所有的节点以最小的代价、做好的状态对外提供服务,这样系统的吞吐量最大,性能更高,对用户而言请求的时间也最小。而且
负载均衡均衡增强了系统的可靠性,最大化降低了单个节点的负载、甚至crash的概率。
负载均衡的方式:
- 轮询(默认):提供同质服务的节点逐个对外提供服务。
- 加权轮询算法:在轮训算法的基础上,考虑到机器的差异性,分配给机器不同的权值,能者多劳。
- 随机算法;随机选一个节点,要求节点足够多。
- 加权随机算法:
- 哈希法:根据客户端的IP,或者求情Key,计算 一个hash值,然后对节点数目取模。
- 最少连接算法;考虑节点的实际情况。