1、nginx是什么?
高性能的HTTP和反向代理服务器。5w+个并发连接数。
2、反向代理
-
正向代理:如果把局域网的外的internet想象成一个巨大的资源库,则局域网中的客户端要访问internet,则需要通过代理服务器来访问。
-
反向代理:
-
客户端对代理是无感知的。
-
因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器
去选择目标服务器获取数据后。 -
在返回给客户端,此时将反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,影藏了真实的服务器IP地址。
3、负载均衡和动静分离
- 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
4、安装
5、配置文件
- 全局块:
- worker_processes 1 worker_processes值越大,可以支持的并发量也越多。会受到硬件、软件等设备的制约。
- events块:
- 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化。
是否允许同时接受多个网络连接,选取那种事件驱动模型来处理连接请求,每个 work proces可以同时支持的度低啊连接数等。
- http块
- 代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
6、反向代理配置 nginx.conf server location
-
proxy_pass
-
location ~ /edu/ {proxy_pass http://IP:PORT};
7. 负载均衡配置
- upstream myserver{
server IP:PORT;
server IP:PORT;
}
server{
location / {
proxy_pass http://myserver;
}
}
- 分配策略:
-
轮询(默认)
-
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、动静分离
-
把动态请求和静态请求分开,可以理解成 nginx 处理静态页面, tomcat处理动态页面。
-
一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流的方案。
-
另一种是动态和静态文件一起发布,通过nginx分开。
-
通过location指定不同的后缀名实现不同的请求转发。
-
通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之间的流量和请求。
9、原理与优化参数配置
-
高可用:主备。keepalived
-
主从配置:keepalived.conf
10. nginx 搭建高可用集群
11. 原理
image.png- master 与 worker:
-
对于每个worker俩说,独立的进程,不需要加锁,省掉了锁带来的开销。
-
采用独立的线程,可以让相互之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,master进程会很快启动性的worker进程。
- 设置多少个worker
-
nginx同redis类似都采用了IO复用机制,每个worker都是一个独立的进程。
但是每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是上千万个请求有不再话下。 -
每个worker的线程可以把一个cpu的性能发挥到极致。所以worker数和服务器的cpu数相等是最为适宜的。
-
设多了会浪费CPU,设多了会造成CPU频繁切换上下文带来的损耗。
-
worker_processes 4
-
连接数 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。
-
网友评论