Generic placeholder image
闲敲代码、落灯花
What's past is prologue

联系邮箱:email@hezehua.net


联系QQ:1907330840

座右铭

保持热情,持续学习,每日精进

Nginx架构设计

Nginx架构设计

本文与作者在csdn上的博文【Nginx架构设计】保持同步


1、Nginx是高度模块化设计的
2、Nginx模块化设计的特点
(1)高度抽象的模块接口
(2)模块接口非常简单,具有很高的灵活性
(3)配置模块的设计
(4)核心模块接口的简单化
(5)多层次、多类别的模块设计
3、所有模块都遵循同样的ngx_module_t接口设计规范
4、官方Nginx模块共有五大类:核心模块、配置模块、事件模块、HTTP模块,mail模块
5、配置类模块只有一个具体模块:ngx_conf_module,这时Nginx最底层的模块,指导着其它模块以配置项为核心来提供功能,是其它模块的基础。
6、Nginx采用完全的·事件驱动架构来处理业务
7、事件消费者:在事件分发者分发事件时,接收事件并进行处理的模块
8、传统Web服务器的事件消费者是一整个进程,在一个请求产生的事件被处理完成之前,会一直占用整个进程的资源;而nginx的事件消费者是一个模块,当事件分发者分发事件时,分发进程会调用事件相应的模块来进行处理,只要事件分法者不阻塞就能对事件进行高速响应。
9、请求的多阶段异步处理:吧一个请求的处理过程按照事件的触发方式划分为多个阶段,每个阶段都可以由事件收集、分发器处理。
10、Nginx采用一个master管理进程、多个worker进程的设计方式。这种方式带来以下优点:(1)利用多核系统的并发处理能力;(2)负载均衡;(3)管理进程会负责监控工作进程的状态,并负责管理其行为。
11、为了避免出现内存碎片、减少向操作系统申请内存的次数、降低各个模块开发度,Nginx设计了简单的内存池,通常它不负责回收内存池中已经分配的内存。这种内存池最大的优点是:把多次向系统申请内存的操作整合成一次,这大大减少了CPU资源的消耗,同时减少了内存碎片。
12、通常每一个请求都有一个这种简易的独立内存池,而在请求结束时则会销毁整个内存池,把曾经分配好的内存一次性归还给操作系统。

猜你喜欢
网站配置CDN的艰辛历程
阅读 202

以前就想着配置cdn了,但是一直配置不得法,添加完配置也没有生效,这两天认真研究了一下,终于解决了。 首先是在阿里云上的cdn配置: 加速域名:image.aaa.com,就是让网站访问图片的域名 回源域名:bbb.com,就是能真实访问到图片资源的域名,不过由于我的图片路径是IP访问的,我配置...

nginx之虚拟主机与请求的分发
阅读 250

由于IP地址有限,因此经常存在多个主机域名对应同一个IP地址的情况,这时nginx.conf中就可以按照server_name(对应用户请求中的主机域名)并通过server块来定义虚拟主机,每个server块就是一个虚拟主机,它只处理与之相对应的主机域名请求。这样,一台服务器上的nginx就能...

nginx之worker进程个数
阅读 225

nginx.conf配置文件中有一个worker_processes配置项,默认配置为: worker_processes 1 worker进程的数量会直接影响性能。 每一个worker进程都是单线程进程,它们调用各个模块以实现多种多样的功能,如果这些模块确认不会出现阻塞式...

配置虚拟主机
阅读 169

server { listen 8080; server_name localhost; location / { root /xxx/xxx/wordpress; index inde...

nginx配置静态资源允许跨域访问
阅读 207

在server模块中添加配置: add_header 'Access-Control-Allow-Origin' '*'; 例: server { listen 80; add_header 'Access-Control-Allow-...

nginx之反向代理服务器
阅读 150

本文摘抄自: 《深入理解Nginx 模块开发与架构解析》 反向代理(reverse proxy)方式是指用代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将从上游服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外的表现...

Nginx进程间通信机制
阅读 187

3种消息传递方式 1、共享内存 当多个进程共享同一块内存时,在任何一个进程修改了共享内存中的内容后,其它进程通过访问这段共享内存都能够得到修改后的内容。 Nginx通过进程间共享数据的主要方式就是共享内存。 2、套接字 频道是Nginx m...