代理
代理实际上就是一个中介,本来A、B可以直接连接,中间插入一个C,A、B通过C来连接,C就是代理了。
正向代理
客户端没有与服务器直接相连,隐藏了真实的客户端地址,可以很好地保护客户端的安全性。
流程:正向代理类似一个跳板机,代理访问外部资源。正向代理时,由客户端发送对某一个目标服务器的请求时,代理服务器在中间将请求转发给目标服务器,目标服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。
适用场景:
- 访问被禁止的资源
- 隐藏客户端的地址
- 进行客户访问控制
- 加速访问资源
反向代理
服务器根据客户端的请求,从其关系的一组或多组后端服务器上获取资源,然后再将这些资源返回给客户端,客户端只会得知代理服务器的IP地址,而不知道代理服务器后面的服务器集群的存在。
**流程:**由客户端发起对代理服务器的请求,代理服务器在中间将请求转发给某一个服务器,服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。
区别
最核心的不同在于代理的对象不同:
- 正向代理代理的是客户端,即正向代理隐藏了真实客户端
- 方向代理代理的是服务端,即反向代理隐藏了真实服务端
nginx反向代理负载均衡算法
- 轮询策略:默认的负载均衡策略,使用 upstream 关键字即可。如果后端服务宕机了可以自动踢掉。
- 最少连接数负载均衡策略:使用 least_conn 关键字。
- ip-hash负载均衡策略:使用 ip_hash 关键字。每个请求按访问ip的hash结果分配,这样每个访客固定访问某个服务器,可以解决session问题。
- 权重负载均衡策略:使用 weight关键字,在每一个ip后面加上权重。用于后端服务器性能不一的情况。