Nginx常见问题整理
需积分: 0 188 浏览量
更新于2023-01-18
1
收藏 692KB DOC 举报
Nginx常见问题整理
Nginx 是一款轻量级的 Web 服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。
Nginx 的核心技术点
1. 轻量级 / 高性能的反向代理 Web 服务器
2. 实现非常高效的反向代理、负载平衡
3. 可以处理 2-3 万并发连接数,官方监测能支持 5 万并发
Nginx 的优点
1. 跨平台、配置简单
2. 非阻塞、高并发连接:处理 2-3 万并发连接数,官方监测能支持 5 万并发
3. 内存消耗小:开启 10 个 Nginx 才占 150M 内存
4. 成本低廉,且开源
5. 稳定性高,宕机的概率非常小
6. 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了
Nginx 的应用场景
1. http 服务器:Nginx 是一个 http 服务,可以独立提供 http 服务,可以做网页静态服务器
2. 虚拟主机:可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机
3. 反向代理,负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 Nginx 做反向代理
4. 安全管理:可以使用 Nginx 搭建 API 接口网关,对每个接口服务进行拦截
Nginx 的请求处理过程
1. Nginx 在启动时,会解析配置文件,得到需要监听的端口与 IP 地址,然后在 Nginx 的 Master 进程里面先初始化好这个监控的 Socket
2. 然后,再 fork 出多个子进程出来
3. 之后,子进程会竞争 accept 新的连接
4. 客户端与 Nginx 建立好连接后,某一个子进程会 accept 成功,得到这个建立好的连接的 Socket
5. 设置读写事件处理函数,并添加读写事件来与客户端进行数据的交换
6. Nginx 或客户端来主动关掉连接,到此,一个连接就寿终正寝了
Nginx 是如何实现高并发的
1. Nginx 的异步非阻塞工作方式正是利用了等待的时间
2. 在需要等待的时候,这些进程就空闲出来待命了
3. 因此,表现为少数几个进程就解决了大量的并发问题
Nginx 是如何利用的
1. 同样的 4 个进程,如果采用一个进程负责一个 request 的方式,那么,同时进来 4 个 request 之后,每个进程就负责其中一个,直至会话关闭
2. 如果有第 5 个 request 进来了,就无法及时反应了,因为 4 个进程都没干完活呢
3. 因此,一般有个调度进程,每当新进来了一个 request,就新开个进程来处理
4. Nginx 不这样,每进来一个 request,会有一个 worker 进程去处理
5. 处理到可能发生阻塞的地方,比如向上游(后端)服务器转发 request,并等待请求返回