首页 > 系统相关 >nginx之模块

nginx之模块

时间:2023-09-13 09:58:57浏览次数:55  
标签:请求 处理 worker nginx 模块 ngx

模块概述

  • nginx将各功能模块组织成一条链,当有请求到达的时候,请求依次经过这条链上的部分或者全部模块,进行处理。每个模块实现特定的功能。例如,实现对请求解压缩的模块,实现SSI的模块,实现与上游服务器进行通讯的模块,实现与FastCGI服务进行通讯的模块。
  • 有两个模块比较特殊,他们居于nginx core和各功能模块的中间。这两个模块就是http模块和mail模块。这2个模块在nginx core之上实现了另外一层抽象,处理与HTTP协议和email相关协议(SMTP/POP3/IMAP)有关的事件,并且确保这些事件能被以正确的顺序调用其他的一些功能模块。
  • 目前HTTP协议是被实现在http模块中的,但是有可能将来被剥离到一个单独的模块中,以扩展nginx支持SPDY协议。

模块分类

  • event module: 搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括ngx_events_module, ngx_event_core_module和ngx_epoll_module等。nginx具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。
  • phase handler: 此类型的模块也被直接称为handler模块。主要负责处理客户端请求并产生待响应内容,比如ngx_http_static_module模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。
  • output filter: 也称为filter模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有html页面增加预定义的footbar一类的工作,或者对输出的图片的URL进行替换之类的工作。
  • upstream: upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
  • load-balancer: 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

Nginx请求处理

  • nginx使用一个多进程模型来对外提供服务,其中一个master进程,多个worker进程。master进程负责管理nginx本身和其他worker进程。
  • 所有实际上的业务处理逻辑都在worker进程。worker进程中有一个函数,执行无限循环,不断处理收到的来自客户端的请求,并进行处理,直到整个nginx服务被停止。
  • worker进程中,ngx_worker_process_cycle()函数就是这个无限循环的处理函数。在这个函数中,一个请求的简单处理流程如下:
  1. 操作系统提供的机制(例如epoll, kqueue等)产生相关的事件。
  2. 接收和处理这些事件,如是接受到数据,则产生更高层的request对象。
  3. 处理request的header和body。
  4. 产生响应,并发送回客户端。
  5. 完成request的处理。
  6. 重新初始化定时器及其他事件。

标签:请求,处理,worker,nginx,模块,ngx
From: https://www.cnblogs.com/hasome/p/17698710.html

相关文章

  • 安装Nginx
    一、使用CentOS7自带Yum安装Nginx1、在安装Nginx前,先执行以下命令更新Yum源:yumupdate2、使用以下命令安装Nginx:yuminstallnginx3、安装完成后,使用以下命令启动Nginx:systemctlstartnginx二、手动编译安装Nginx1、下载Nginx源码包:wgethttp://nginx.org/download/ngin......
  • 软件测试 | 模块化与模块独立性
    1.模块化模块是数据说明、可执行语句等程序对象的集合。模块可以单独被命名,而且可通过名字来访问,例如,过程、函数、子程序、宏等都可作为模块。2.抽象与逐步求精软件工程的每一步都是对软件解法的抽象层次的一次精化。抽象与逐步求精是紧密相关的。3.信息隐蔽和局部化信息隐蔽是指一个......
  • 通过Nginx配置一个ftp目录下载
    1首先需要安装Nginx组件2指定下载展示的目录,证书地址,日志信息位置即可。server{listen443ssl;server_namedownload.tianshiemo.com;ssl_certificate/ssl/download/fullchain.crt;ssl_certificate_key/ssl/download/private.key;access_log/cod......
  • 新增device模块
    1新建模块默认目录结构如下: 2创建菜单创建一级目录:  创建二级目录: 3自动代码生成  生成代码目录如下:4前台代码生成的前台代码js部分放入ruoyi-ui下面的api目录。 vue部分代码放入views目录:5后台代码后台的controller代码放到ruoyi-admin目录......
  • nginx https 403错误
    userwwwwww;worker_processesauto;worker_cpu_affinityauto;error_log/home/wwwlogs/nginx_error.logcrit;pid/usr/local/nginx/logs/nginx.pid;#Specifiesthevalueformaximumfiledescriptorsthatcanbeopenedbythisprocess.worker_rlimit_no......
  • Python学习 -- 正则表达式(re模块)
    正则表达式是一种强大的模式匹配工具,用于在文本中查找和匹配特定模式的字符串。在Python中,我们可以使用re模块来操作和处理正则表达式。本篇技术博客将介绍正则表达式的基础语法和re模块的详细使用方法,并通过具体的代码案例来帮助初学者快速掌握正则表达式的使用。正则表达式基础语......
  • DC电源模块对设计和布线的关键
    DC电源模块在电子设备中起到了至关重要的作用,因为它们提供了设备所需的稳定电压。在设计和布线过程中,电源模块的正确选择和使用非常重要,因为错误的电源模块可能会导致设备故障,甚至损坏整个系统。首先,正确选择适当的DC电源模块对于电子设备的稳定性和可靠性至关重要。电源模块应该......
  • DC/DC电源升压模块直流线性可调高压电压控制输出升压电源5v12v24v转0-100V/110V/200V/
    特点●效率高达70%以上●1*2英寸标准封装●正负电压输出●价格低●电压控制,输出电压随控制电压线性变化●工作温度:-40℃~+85℃●阻燃封装,满足UL94-V0要求●温度特性好●可直接焊在PCB上应用GRA  系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9......
  • 十、Nginx防盗链设计
    先了解一下何谓盗链:「「盗链即是指外部网站引入当前网站的资源对外展示」」 ,来举个简单的例子理解:❝好比壁纸网站X站、Y站,X站是一点点去购买版权、签约作者的方式,从而积累了海量的壁纸素材,但Y站由于资金等各方面的原因,就直接通过<imgsrc="X站/xxx.jpg"/>这种方式照搬了X站的所有......
  • 十一、Nginx大文件传输配置
    某些业务场景中需要传输一些大文件,但大文件传输时往往都会会出现一些Bug,比如文件超出限制、文件传输过程中请求超时等,那么此时就可以在Nginx稍微做一些配置,先来了解一些关于大文件传输时可能会用的配置项:在传输大文件时,client_max_body_size、client_header_timeout、proxy_read_ti......