nginx

作者: 南园故剑00 | 来源:发表于2020-07-21 23:29 被阅读0次

    1、nginx是什么?

    高性能的HTTP和反向代理服务器。5w+个并发连接数。

    2、反向代理

    1. 正向代理:如果把局域网的外的internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问。

    2. 反向代理:

    • 客户端对代理是无感知的。

    • 因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器
      去选择目标服务器获取数据后。

    • 在返回给客户端,此时将反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,影藏了真实的服务器IP地址。

    3、负载均衡和动静分离

    • 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

    4、安装

    5、配置文件

    1. 全局块:
    • worker_processes 1 worker_processes值越大,可以支持的并发量也越多。会受到硬件、软件等设备的制约。
    1. events块:
    • 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化。
      是否允许同时接受多个网络连接,选取那种事件驱动模型来处理连接请求,每个 work proces可以同时支持的度低啊连接数等。
    1. http块
    • 代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

    6、反向代理配置 nginx.conf server location

    1. proxy_pass

    2. location ~ /edu/ {proxy_pass http://IP:PORT};

    7. 负载均衡配置

    1. upstream myserver{
      server IP:PORT;
      server IP:PORT;
      }

    server{
    location / {
    proxy_pass http://myserver;
    }
    }

    1. 分配策略:
    • 轮询(默认)

    • weight:权重,默认1,权重越高被分配的客户端越多。

    upstream myserver{
    server IP:PORT weight=5;
    server IP:PORT weight=10;
    }

    • IP_HASH:每个访客固定访问一个后端服务器,可以解决session的问题

    upstream myserver{
    ip_hash
    server IP:PORT;
    server IP:PORT;
    }

    • fair 按照后端服务器的响应时间来分配请求,响应时间越短的优先分配

    upstream myserver{
    server IP:PORT;
    server IP:PORT;
    fair
    }

    8、动静分离

    1. 把动态请求和静态请求分开,可以理解成 nginx 处理静态页面, tomcat处理动态页面。

    2. 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流的方案。

    3. 另一种是动态和静态文件一起发布,通过nginx分开。

    4. 通过location指定不同的后缀名实现不同的请求转发。

    5. 通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之间的流量和请求。

    9、原理与优化参数配置

    1. 高可用:主备。keepalived

    2. 主从配置:keepalived.conf

    10. nginx 搭建高可用集群

    11. 原理

    image.png
    1. master 与 worker:
    • 对于每个worker俩说,独立的进程,不需要加锁,省掉了锁带来的开销。

    • 采用独立的线程,可以让相互之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,master进程会很快启动性的worker进程。

    1. 设置多少个worker
    • nginx同redis类似都采用了IO复用机制,每个worker都是一个独立的进程。
      但是每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是上千万个请求有不再话下。

    • 每个worker的线程可以把一个cpu的性能发挥到极致。所以worker数和服务器的cpu数相等是最为适宜的。

    • 设多了会浪费CPU,设多了会造成CPU频繁切换上下文带来的损耗。

    1. worker_processes 4

    2. 连接数 worker_connection:每个worker进程能建立连接的最大值

    • 发送请求,占用了 worker 的几个连接数:2/4

    • nginx有一个master,有四个worker,每个worker支持的最大连接数据1024,支持的最大并发数是多少?

      • 对于HTTP 请 求 本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections * worker_processes

      • 如果是支持 http1.1 的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数是: worker_connections * worker_processes /2

      • 如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4。

    相关文章

      网友评论

          本文标题:nginx

          本文链接:https://www.haomeiwen.com/subject/goigkktx.html