Negix主要用于实现三个功能

  • 请求转发
  • 负载均衡
  • 动静分离

反向代理

正向代理
比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。
正向代理的过程,隐藏了真实的客户端。客户端请求的服务都被代理服务器代替来请求

反向代理
比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务器,它的内部有很多台服务器,那我们进行访问的时候,因为服务器中间session不共享,我们在服务器之间访问需要频繁登录。
这时,淘宝搭建一个过渡服务器,对我们是没有任何影响的,我们登录一次,但是能访问所有,这种情况就是反向代理。对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。

Negix便是一个高性能的HTTP和反向代理web服务器

请求转发

Negix服务器对外暴露Negix代理服务器的地址,将客户端的不同请求转发到内部的不同目标服务器中,然后再通过代理服务器返回数据。
客户端只能访问Negix服务器,由Negix根据规则进行请求转发。
常用的规则如路径匹配,根据路径地址中是否包含相应字符串来决定转发到哪个目标服务器。

负载均衡

负载均衡,把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器的情况。

负载均衡常用算法

  1. 轮询(Negix中默认)
    轮询为负载均衡中较为基础也较为简单的算法,它不需要配置额外参数。假设配置文件中共有 台服务器,该算法遍历服务器节点列表,并按节点次序每轮选择一台服务器处理请求。当所有节点均被调用过一次后,该算法将从第一个节点开始重新一轮遍历。
    但对于服务器性能不同的集群而言,该算法容易引发资源分配不合理等问题。
  2. 加权轮询
    为了避免普通轮询带来的弊端,加权轮询应运而生。在加权轮询中,每个服务器会有各自的 weight。一般情况下,weight 的值越大意味着该服务器的性能越好,可以承载更多的请求。该算法中,客户端的请求按权值比例分配,当一个请求到达时,优先为其分配权值最大的服务器。
  3. 最小连接数
    假设共有 台服务器,当有新的请求出现时,遍历服务器节点列表并选取其中连接数最小的一台服务器来响应当前请求。连接数可以理解为当前处理的请求数。
  4. IP 哈希(IP hash)
    ip_hash 依据发出请求的客户端 IP 的 hash 值来分配服务器,该算法可以保证同 IP 发出的请求映射到同一服务器,或者具有相同 hash 值的不同 IP 映射到同一服务器。

动静分离

Nginx动静分离,简单来说,就是动态请求和静态请求分开,也可以理解成使用Nginx处理静态页面,Tomcat 处理动态页面。
为了加快网站的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,来加快解析速度,提高请求的访问效率,降低原来单个服务器的压力。这就是动静分离。

补充

nginx的启动端口号(如81)和nginx的监听端口号(如9001)是不一样的,功能也是不同的。