Nginx概述

Nginx是一个高性能的HTTP和反向代理web服务器,核心特点是占有内存少,并发能力强。支持50000个并发连接数,不仅如此,CPU和内存的占用也非常的低,10000个没有活动的连接只占用2.5M的内存。

Nginx核心配置文件解读

Nginx的核心配置文件conf/nginx.conf包含三块内容:全局块、events块、http块

  • 全局块

从配置文件开始到events块之间的内容,此处的配置影响nginx服务器整体的运行

  • events块

events块主要影响nginx服务器与⽤户的⽹络连接,⽐如worker_connections 1024,标识每个
workderprocess⽀持的最⼤连接数为1024

  • http块

http块是配置最频繁的部分,虚拟主机的配置,监听端⼝的配置,请求转发、反向代理、负载均衡

Nginx底层进程机制剖析

Nginx启动后,以daemon多进程方式在后台运行,包括一个Master进程和多个Worker进程。

  • Master进程

主要管理worker进程,如:

  • 接受外界信号向各worker进程发送信号
  • 监控worker进程的运行状态,当worker进程异常退出后Master进程会自动重新启动新的worker进程等
    • Worker进程

worker进程处理具体的网络请求。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只肯能在一个worker进程中处理,一个worker进程,不可能处理其他进程的请求。worker进程的个数是可以设置的,一般设置为机器cpu核数一致。

多进程模型

image.png

master进程创建之后,会建⽴好需要监听的的socket,然后从master进程再fork出多个worker进程。所以,所有worker进程的监听描述符listenfd在新连接到来时都变得可读。nginx使⽤互斥锁来保证只有⼀个workder进程能够处理请求,拿到互斥锁的那个进程注册listenfd读事件,在读事件⾥调⽤accept接受该连接,然后解析、处理、返回客户端。
nginx多进程模型好处

  • 每个worker进程都是独⽴的,不需要加锁,节省开销
  • 每个worker进程都是独⽴的,互不影响,⼀个异常结束,其他的照样能提供服务
  • 多进程模型为reload热部署机制提供了⽀撑