Nginx服务器架构

简介:

=====Nginx服务器架构=====

=== 模块化结构 ===

1、模块化设计的原则:

      单一职责原则、自顶向下,逐步求精原则,高内聚,低耦合原则

2、nginx涉及到的模块分为:核心模块、标准模块、HTTP模块、可选HTTP模块、邮件服务模块、第三方模块。

 

=== nginx服务器的web请求处理机制 ===

1、web服务器与客户端是一对多的关系,web服务器必须有能力同时为多个客户端提供服务。

     一般来说,完成并行处理请求工作有三种方式可供选择:多进程方式、多线程方式和异步方式。

 

概念

优点

缺点

多进程方式

server每接受到一个client请求,就由主进程生成一个子进程出来

和客户端建立连接进行交互,直到连接断开,该子进程就结束了。

各子进程相互独立,处理请求时互不干扰这保证了提供服务

稳定性,子进程退出时资源被回收业不会留下任何垃圾

对系统资源造成压力

使系统性能下降

多线程方式

server每接受到一个client请求,就由主进程派生一个子线程出来

 和客户端进行交互

减轻了对系统资源的消耗

多个线程彼此互相影响,开发者要自己

对内存进行管理,增加出错的风险

异步方式

异步阻塞:发送方发生请求给接收方后,不必等待响应,可以

它事,接受方处理请求时进行的IO操作如果不能马上得到结果

一直等到返回结果后,才响应发送方。

异步非阻塞:接受方处理请求时进行的IO操作如果不能马上得

 果,也不等待,而是马上返回去做其他事,当IO操作完成以后

完成状态通知接收方,接收方再响应发送方。

 

异步非阻塞:效率最高

异步阻塞:效率低

2、nginx服务器的一个很显著的优势是能够同时处理大量并发请求,它结合多进程机制和异步机制(异步非阻塞)对外提供服务。

3、Nginx服务器的进程模型有两种:Single模型(单进程模型)和Master-Worker(Master-Slave),所有工作进程都用于接收和处理客户端的请求。

4、nginx服务器的事件处理机制:


=== Nginx服务器架构 ===

1、nginx服务器的进程:

    主进程:Nginx服务器启动时运行的主要进程

    工作进程:由主进程生成、生存与主机程的整个生命周期,它是nginx服务器提供web服务,处理客户端请求的主要进程,完成了nginx服务器的主体工作。因此我们要重点监视工作进程的运行状态,保证nginx服务器对外提供稳定的服务。

    缓存索引重建及管理进程:缓存索引重建进程在nginx服务器启动一段时间后(默认1分钟),由主进程生成;缓存索引管理进程存在于主进程的整个生命周

2、进程的交互:

    Master-Worker:通过管道

    Worker-Worker:通过主进程

=====Nginx服务器高级配置=====

nginx服务器的配置应结合实际运行环境(服务器运行的操作系统及硬件环境)进行配置。针对不同的网络负载环境选择相匹配的硬件环境。

1、针对IPv4的linux内核参数优化配置

    net.core.netdev_max_backlog :设置允许发送到队列的数据包的最大数目,默认128

    net.core.somaxcon:配置系统同时打开的TCP连接数,默认128

   net.ipv4.tcp_max_orphans:设置系统最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上。超过这个数,没关联的TCP套接字立即被复位,同时给出警告信息。可以防止简单的Dos。

   net.ipv4.tcp_timestamps:是否禁用对tcp时间戳的支持,不禁用的话,时间戳必须得是一个增值,若出现后一个时间戳比前一个小,系统就会认为有错,拒绝接受。针对nginx来说,建议将其关闭net.ipv4.tcp_timestamps = 0。

 

2、针对网络的配置

     worker_processes:最好设置为cpu内核个数的倍数,这个数并不是越大越好,太大会增加主进程调度负担,也可能影响系统的IO效率。

     worker_cpu_affinity:设置为每个工作进程分配的CPU工作内核,指令值是由几组二进制值表示的。每组表示一个工作进程,每位表示该进程使用cpu内核的情况,1使用,0不使用。

                                        例:worker_cpu_affinity  0001 0100 1000 0010;         0001表示第一个进程使用第一个cpu内核,0100表示第二个进程使用第二个cpu内核。




      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1958889 ,如需转载请自行联系原作者


相关文章
|
3月前
|
存储 应用服务中间件 数据库
C++文件服务器项目—Nginx+FastDFS插件—5
C++文件服务器项目—Nginx+FastDFS插件—5
37 0
|
25天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
39 0
|
2天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
7天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
2月前
|
网络协议 Unix 应用服务中间件
如何进行 Nginx HTTPS服务器搭建
【2月更文挑战第6天】
63 0
|
2月前
|
负载均衡 JavaScript 应用服务中间件
强大的WEB服务器-Nginx
强大的WEB服务器-Nginx
29 0
|
2月前
|
Kubernetes 应用服务中间件 nginx
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器
|
2月前
|
应用服务中间件 nginx
将树莓派转身为强大的Web服务器:使用Nginx和cpolar实现远程访问
安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行。同时结合cpolar 内网穿透工具即可实现远程访问。
|
3月前
|
负载均衡 Ubuntu 应用服务中间件
如何在Nginx上阻止特定IP地址的访问,以增强服务器的安全性
如何在Nginx上阻止特定IP地址的访问,以增强服务器的安全性
38 0
如何在Nginx上阻止特定IP地址的访问,以增强服务器的安全性