Nginx是大型互联网架构的必备中间件,也是大厂经常涉及的关键点,下面我重点详解Nginx架构@mikechen
Nginx
Nginx(发音同 engine x),是一个高性能的HTTP、和反向代理服务器。
Nginx,以其高性能、高可靠性、低内存消耗/和易于配置而闻名。
Nginx,广泛应用于:Web服务器、负载均衡、反向代理、缓存服务器…等场景。
Nginx架构
Nginx 的架构,采用经典的多进程模型,核心是一个 主进程(Master Process) 、和多个 工作进程(Worker Process) 的协作运行。
Nginx架构,如下图所示:
Nginx这种设计,充分发挥了硬件多核性能,确保了高性能、高并发和高可靠性。
主进程(Master Process)
主进程的职责是:管理、和控制整个 Nginx 服务的生命周期。
包含:
管理角色
主进程负责管理工作进程,包括:读取和解析配置文件、启动和监控工作进程;
信号处理
主进程接收系统信号(如:重启、停止…等),并根据信号执行相应操作,例如重新加载配置或优雅地关闭工作进程。
配置管理
在Nginx启动时,主进程会读取nginx.conf配置文件,并根据其中的设置创建相应数量的工作进程。
工作进程(Worker Process)
工作进程是真正处理客户端请求的核心模块,每个进程独立运行,并由主进程管理。
包含:
请求处理
每个工作进程负责实际处理客户端请求,包括接收连接、解析请求、生成响应等。工作进程是单线程的,这意味着每个工作进程在同一时间只能处理一个请求。
并发能力
尽管每个工作进程是单线程的,但通过事件驱动和非阻塞I/O机制,Nginx能够在一个工作进程中同时处理多个连接,从而实现高并发性能。
资源隔离
各个工作进程之间相互独立,避免了资源竞争和上下文切换带来的性能损失。
Nginx原理
以下是 Nginx 接收和处理请求的简要流程:
大致分为,如下步骤:
客户端连接:客户端通过 TCP/IP 建立、与 Nginx 的连接。
分配工作进程:主进程监听端口并将连接交给一个工作进程处理。
解析请求:工作进程解析 HTTP 请求头、和路径信息。
匹配 location:根据 URL 路径,匹配到相应的 location 块执行处理逻辑。
转发或返回响应:如果是静态资源,直接返回文件内容,如果是代理请求,则将请求转发给后端服务器。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》