当前位置:首页 > 技术文章 > 正文内容

Nginx架构最全详解(图文全面总结)

arlanguage3个月前 (01-31)技术文章14

Nginx是大型架构的必备中间件,也是高并发架构的关键点,下面我重点详解Nginx架构@mikechen

本文作者:陈睿|mikechen

文章来源:mikechen.cc

Nginx

Nginx是一款高性能的HTTP、和反向代理服务器,它以其高并发处理能力、低内存消耗、稳定性...等特点,成为了目前最流行的Web服务器。

Nginx可以作为Web服务器直接提供静态内容,Nginx也可以作为反向代理服务器,将客户端的请求转发到后端的多个服务器上。

Nginx可以实现负载均衡,将请求分发到不同的后端服务器上,从而极大的提升性能。

Nginx架构

Nginx架构,如下图所示:

主要包括两个核心组件:主进程(Master Process)、和工作进程(Worker Process)。

主进程

主进程是Nginx的核心组件,负责:初始化Nginx,加载配置文件,创建worker进程...等。

它的主要功能包括:

  • 启动、和管理 Worker 进程;
  • 监听配置文件...变更,并在不重启的情况下重新加载配置;
  • 处理信号,比如:停止、重启、优雅重启...等;
  • 以及,管理 Worker 进程的生命周期。

Master 进程,并不直接处理客户端的请求,它只是用于控制和管理 Worker 进程。

工作进程

worker进程:是Nginx的工作进程,负责:处理客户端的请求。

每个Worker进程都是一个完整的Nginx服务器,多个Worker进程之间是对等的。

每个 Worker 进程,可以处理成千上万的并发连接,而且 Nginx 的事件模型可以根据系统负载自动选择合适的事件通知机制。

比如: epoll、kqueue ...等,如下图所示:

在Nginx中,epoll被广泛用于处理大量的网络连接,使其能够高效地处理高并发请求。

使用 epoll 后,Nginx 能够非常高效地处理成千上万的并发连接。

它通过 非阻塞 I/O 、和 事件驱动 模式,避免了每个连接都占用一个线程或进程,而是通过少量的 Worker 进程处理大量的请求。

Nginx工作流程

大致工作流程,如下:

首先,Master进程分发请求。

Master进程,将请求分发给一个Worker进程处理;

其次,Worker进程处理请求。

解析请求:Worker进程解析HTTP请求,获取请求的方法、URL、头部信息等。

处理请求:根据配置,对请求进行相应的处理,如静态文件处理、反向代理、负载均衡等。

最后,生成响应。

Worker进程生成HTTP响应,并发送给客户端。

本文作者:陈睿|mikechen

文章来源:mikechen.cc

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1606.html

分享给朋友:

“Nginx架构最全详解(图文全面总结)” 的相关文章

Nginx集群搭建 nginx keepalived集群

Nginx负载均衡环境:四台虚拟机、系统Centos7.9、NginxHostnameIp说明lb192.168.133.142Nginx主负载均衡器rs1192.168.133.130Web服务器1rs2192.168.133.137Web服务器2Client192.168.133.139客户端—...

nginx 多域名配置 nginx多站点配置示例

Nginx 可以配置多个域名,以便根据不同的域名来处理不同的请求。下面是一个配置多个域名的例子:server { listen 80; server_name example1.com; location / { root /var/www/example1...

Nginx 高可用方案

原文链接:https://www.cnblogs.com/SimpleWu/p/11004902.html准备工作192.168.16.128192.168.16.129两台虚拟机。安装好Nginx安装Nginx更新yum源文件:rpm -ivh http://nginx.org/packages/...

利用Nginx正向代理实现局域网电脑访问外网

引言在网络环境中,有时候我们需要让局域网内的电脑访问外网,但是由于网络策略或其他原因,直接访问外网是不可行的。这时候,可以借助 Nginx 来搭建一个正向代理服务器,实现局域网内电脑通过 Nginx 转发访问外网的需求。在工作中我遇到了一个类似的情况:在公司网络中,由于管理要求,局域网内的电脑不能直...

如何在本地部署WEB开发(PHP)环境

目前很多网站程序是基于PHP语言,比如比较有名的开源程序WordPress、Discuz、DedeCMS...对于大多初学者来说,本地部署WEB环境(PHP/ASP+Apache/Nginx+Mysql),一个一个安装调试是一件很麻烦的事。所以这次分享一下如何在本地快速搭建WEB环境!考虑到大家大多...

一般人绝对无法发现的nginx锅

nginx热启动:nginx -s reloadPS:要在/etc/profile环境变量PATH里配置nginx的路径。配置完执行 source /etc/profile 让变量生效。 一次部署,同样的前端代码,放到了nginx里面运行,但是有一个模块全部页面都报这个错误,其他模块正常展示。以前遇...