什么是nginx?
nginx是一个高性能的 http 和反向代理服务器,也是一个 IMAP/POP3/SMTP服务器。
正向代理
正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的使用场景:
(1)访问本无法访问的服务器B
(2)加速访问服务器B
(3)Cache作用
(4)客户端访问授权
(5)隐藏访问者的行踪
反向代理
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
反向代理的作用:
(1)保护和隐藏原始资源服务器
(2)负载均衡
正向代理和反向代理的区别
- 正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。
- 正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
- 反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
- 反向代理隐藏了真实的服务端。
nginx负载均衡的方案
轮询
轮询,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器。
最少连接
Web请求会被转发到连接数最少的服务器上。
IP地址哈希
前述的两种负载均衡方案中,同一客户端连续的Web请求可能会被分发到不同的后端服务器进行处理,因此如果涉及到会话Session,那么会话会比较复杂。常见的是基于数据库的会话持久化。要克服上面的难题,可以使用基于IP地址哈希的负载均衡方案。这样的话,同一客户端连续的Web请求都会被分发到同一服务器进行处理。
基于权重的负载均衡
基于权重的负载均衡即Weighted Load Balancing,这种方式下,我们可以配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器。
注意:基于权重的负载均衡和基于IP地址哈希的负载均衡可以组合在一起使用。