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