1. 正向代理
就是我们通常说的代理,需要客户端做特殊配置。正向代理接收客户端的请求,然后向目标服务器发送请求,并将接收到的响应返回客户端。
比如,国内无法访问Facebook, 需要使用代理才能访问,这里的代理是正向代理。
正向代理可以向目标服务器屏蔽客户端的身份。
2. 反向代理
对客户端是透明的,客户端不知道我们访问的是代理服务器。反向代理服务器接收客户端的请求,并根据配置决定将请求转发到哪个后端服务器, 接收后端服务器的响应后,返回客户端。在客户端看来,这些内容就像是在代理服务器上。
反向代理的缺点:会成为一个瓶颈,因为所有请求响应都要经过它。
正向代理和反向代理的区别:需不需要客户端配置。二者都可以使用缓存。
3. Nginx 代理模块
重要参数:
proxy_pass 配置请求转发的后台服务器地址。
proxy_set_header X-Real-IP $remote_addr; 使得后端服务器的访问日志里记录真实的客户端地址,而非代理服务器的地址。
4. Nginx 负载均衡
基于反向代理。
upstream 模块负责实现负载均衡。
轮询(默认):根据请求到来的时间,逐一选择后端的服务器。如果后端服务器宕机,就把故障系统移除。不影响服务的状态。可以通过设置Weight, 指定轮询权值,Weight越到分到的请求也越多,应对后端服务器性能不均的情况。
Ip hash: 按照访问客户端的IP hash值进行分配。使得同一个ip固定到了一个后台服务器。某种程度上解决了session共享的问题。
fair; 根据后端服务器的响应时间做决策。低延迟优先分配。
...