本文通俗易懂的讲解nginx的代理和负载均衡
Nginx的代理:正向代理、反向代理
正向代理
正向代理(forward proxy) ,代理客户端,为在防火墙内的局域网客户端提供访问Internet的途径。为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端。我们平时说的代理就是指正向代理。
举个栗子:A想找C贷款,但是C与A并不熟悉,A就想了一个办法,让B帮忙找C贷款,整个过程中C并不知道A的存在,就这样完成了A找C的贷款诉求(B充当了正向代理的角色,比如VPN)
反向代理
反向代理(Reverse Proxy),代理服务器,将防火墙后面的服务器提供给Internet访问。以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器
举个栗子:A想找B贷款,B没有钱,B就偷偷的找C借了钱给A,整个过程中A并不知道C的存在,C就充当了反向代理的角色
对比图
正向代理的应用
- 访问原来无法访问的资源
- 用作缓存,加速访问速度
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理的应用
- 保护内网安全
- 负载均衡
- 缓存,减少服务器的压力
Nginx作为最近较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后台的服务器,决定哪台目标主机来处理当前请求。
负载均衡实现
Nginx用作负载均衡支持的几种调度算法:
轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
weight:指定权重,权重越大,处理请求越多。
ip_hash:每个请求按照用户IP进行分配解决session问题,相同IP地址的用户固定访问同一个服务器。
least_hash:最小连接数,哪台机器连接少就分配到哪台机器。
url_hash:按照目标URL地址进行分配,相同的URL定义到同一后端服务器。