0%

nginx反向代理

nginx学习笔记

nginx作用:

  1. 反向代理
  2. 负载均衡
  3. 动静分离(缓存)

nginx基本原理:

image-20220112174428453

nginx采用master-worker形式进行工作,一个master进程可以有多个woker进程。

image-20220112174519781

worker进程之间通过争抢的方式完成任务。

image-20220112174701073

  • master-workers机制的好处:

    1. 可以使用

      1
      nginx -s reload

      进行热部署。

    2. 每个进程是独立的进程,nginx同redis类似采用了IO多路复用(windows下没有IO多路复用机制)的机制,当一个worker进程退出后,其他的worker仍可以继续进行争抢,实现请求过程。这样可以保证nginx服务不会中断。

  • 需要设置多少worker比较合适:

    每个worker线程都可以把cpu性能发挥到极致,一般worker数量与cpu核心数量相等即可。

  • worker的连接数:

    当仅访问缓存在nginx的静态资源,连接数为2。

    需要访问tomcat(服务器)的资源,连接数为4。

    当worker最大连接数为1024时,能够支持的最大并发数为(假设一共4个worker)

nginx分配服务器策略

  1. 轮询(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能够自动剔除。

  2. weight

    weight代表权重,默认值为1,权重越高被分配的客户端越多。

    1
    2
    3
    4
    upstream myserver {
    server 192.168.237.131:8080 weight = 10;
    server 192.168.237.131:8081 weight = 5;
    }
  3. ip_hash

    每个请求访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,例如:

    1
    2
    3
    4
    5
    upstream myserver {
    ip_hash
    server 192.168.237.131:8080 ;
    server 192.168.237.131:8081 ;
    }
  4. fair

    按后端服务器的响应时间进行分配,响应时间短优先分配

    1
    2
    3
    4
    5
    upstream myserver {
    server 192.168.237.131:8080 ;
    server 192.168.237.131:8081 ;
    fair
    }

动静分离

image-20220111232201962

动静分离实现方案:

  1. 把静态文件独立成单独的域名,放在独立的服务器上,也是当前主流的方案。
  2. 把动态文件和静态文件混合发布,通过nginx分开。

高可用

nginx集群保证如果nginx发生宕机,仍然有可用的nginx服务。

image-20220112165533959

需要使用keepalived插件,创建一个虚拟ip分别绑定2个主、从nginx服务器。

image-20220112170048433